2016-06-01 4 views
0

イベントは毎秒更新を公開しているティックデータ(株価終値)をリッスンします。私はconsole.Writelineを使ってこれを見ることができます。イベントハンドラメソッドからスコープ外のメインクラスの変数を更新する

私は近い価格を取得し、私のメインクラスのリストに追加したいと思います。しかし、tickList変数がスコープ外にあるように見えます。私が使用するアクセス修飾語に関係なく

わからない問題に正しく対処する場合。私はマルチスレッドのアプローチを使ってみましたが、近い価格の最初のリターンはスレッドを停止させるので、その後のレートの更新を得ることはできません。どんな人にアドバイスしますか?

ここに主要なクラスコードがあります。あなたの方法として

class Program 
{ 
    List<Data> tickList = new List<Data>(); 

    static void Main(string[] args) 
    { 
     SamplePattern runSamplePattern = new SamplePattern(); 
     TickData runPublisher = new TickData(); 

     runPublisher.TickUpdated += OnTickUpdated; 

     runPublisher.PublishTickData(); 


     Console.ReadKey(); 
    } 

    private static void OnTickUpdated(object source, TickEventArgs args) 
    { 
     Console.WriteLine(args.Close); 
     Data close = new Data(); 

     // I am trying to add the close price to a list called tickList 

    } 
} 
class Data 
{ 
    public double Close { get; set; } 
} 

答えて

1

すべてが、あまりにも、あなたがstaticフィールドとしてごtickListを作成する必要がありstaticです:あなたはstaticキーワードをOMMIT場合

class Program 
{ 
    static List<Data> tickList = new List<Data>(); 

は、tickListProgramインスタンスメンバーになります。しかし、あなたのメソッドはstaticなので、Programというインスタンスはありません。


詳細については、static in the C# referenceを参照してください。

関連する問題