view MetroWpf/FxRates.Service/PricingService.cs @ 24:a8b50a087544

Stocks and FxRates working, new menu introduced. Working nicely so far
author adminsh@apollo
date Tue, 20 Mar 2012 20:18:35 +0000
parents
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;
  }
}