事件的动作在新线程上执行

时间:2013-04-05 15:07:58

标签: c# multithreading events event-handling observablecollection

我有一个可观察的集合

var QueryList = new ObservableCollection<QueryData>();

假设我已经为触发此集合的CollectionChanged事件实现了OnQueryListCollectionChanged方法。诀窍是我希望这个方法在新线程上执行。

QueryList.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(new ThreadStart(OnQueryListCollectionChanged));

我知道上面的行是不正确的但我不确定如何让Collection的NotifyCollectionChangedEventHandler委托将方法OnQueryListCollectionChanged指向一个新线程。

感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

没有直接的方法可以在注册处理程序的单独线程上处理事件。

你可以将事件指向一个方法,然后从那里生成一个新线程来完成你的工作,是的,引发的事件可能会中断你的主线程,但只能让你开始你的新线程。< / p>

作为旁注,我建议不要直接使用线程,而是使用较新的Task类,请参阅:What is the difference between task and thread?