view MetroWpf/FxRates.Service/PricingService.cs @ 60:fc62c971a117

upload to blog
author Steven Hollidge <stevenhollidge@hotmail.com>
date Sat, 21 Apr 2012 21:19:39 +0100
parents a8b50a087544
children
line wrap: on
line source

using System;
using System.Threading;
using System.Threading.Tasks;
using FxRates.Common;
using System.Collections.Generic;

namespace FxRates.Service
{
  public class PricingService : IPricingService
  {
    PriceFactory factory;
    bool _isRunning = false;
    public bool IsRunning { get { return _isRunning; } }

    public PricingService()
    {
      factory = new PriceFactory();
    }

    public void Start()
    {
      Task.Factory.StartNew(() =>
      {
        _isRunning = true;
        while (_isRunning)
        {
          Thread.Sleep(10);
          if (PriceUpdate == null) continue;
          var latestPrice = factory.GetNextPrice();
          PriceUpdate(null, new PriceUpdateEventArgs { LatestPrice = latestPrice });
        }
      });
    }

    public void Stop()
    {
      _isRunning = false;
    }

    public List<FxRate> GetFullCurrentPrices()
    {
      return factory.CurrentPrices;
    }

    public event EventHandler<PriceUpdateEventArgs> PriceUpdate;
  }
}