【发布时间】:2016-06-02 15:39:35
【问题描述】:
我有一个监听刻度更新的事件,会被点击 100 次。
每点击 10 次,我就用另一种方法添加要采样的内容。然而,这个线程/方法只被调用一次,而不是 9 次。
我相信这可能是由于 tickList.RemoveRange(0,10) 在另外 10 个事件蜂拥而至之前没有被重置为 0...导致我的 If 案例 (tickList.Count == 10) 不再为真。
这里有一些关于我如何调用线程的问题,或者任何解释这种边界情况的方法。因此,将事件处理程序上的滴答数据保持在最低限度?
private static void OnTickUpdated(object source, TickEventArgs args)
{
Console.WriteLine(args.Close);
tickList.Add(args.Close);
if (tickList.Count == 10)
{
Console.WriteLine("We hit sample size");
Thread runThread = new Thread(() =>
{
foreach (var data in tickList)
{
Console.WriteLine("Sample set, do some work: " + data);
}
});
runThread.Start();
if (runThread.ThreadState == ThreadState.Stopped)
{
tickList.RemoveRange(0, 10);
}
}
}
【问题讨论】:
标签: c# multithreading events