我有一个可观察集合
var QueryList = new ObservableCollection<QueryData>();
假设我已经实现了一个方法OnQueryListCollectionChanged当这个集合的CollectionChanged事件被触发。诀窍是我希望这个方法在一个新线程上执行。
QueryList.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(new ThreadStart(OnQueryListCollectionChanged));
我知道上面的行是不正确的,但我不完全确定如何有集合的NotifyCollectionChangedEventHandler委托指向方法OnQueryListCollectionChanged到一个新的线程。
任何帮助都是感激的。
谢谢。
没有直接的方法让事件在一个单独的线程中处理,而不是注册一个处理程序。
你可以将事件指向一个方法,然后从那里生成一个新线程来完成你的工作,是的,被引发的事件可能会中断主线程,但只有足够长的时间让你启动你的新线程。
作为旁注,我建议不要直接使用线程,而是使用较新的Task
类,参见:任务和线程之间的区别是什么?