从事件处理程序方法更新主类上的变量超出范围

时间:2016-06-01 16:30:21

标签: c# events

该事件侦听每秒发布更新的Tick Data(股票收盘价)。我可以使用console.Writeline看到这一点。

我想得到收盘价,并将其添加到我的主类中的List。但是,看起来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 个答案:

答案 0 :(得分:1)

由于您的方法都是static,因此您还需要将tickList创建为static字段:

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

如果您省略static关键字,tickList将成为Program实例成员。但是您的方法是static,因此没有Program的实例。

有关详细信息,请参阅static in the C# reference