0

執行我有一個觀察的集合事件的行動在新線程

var QueryList = new ObservableCollection<QueryData>(); 

假設我有實現的方法OnQueryListCollectionChanged在觸發該集合的CollectionChanged事件。訣竅是我希望這個方法在新線程上執行。

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

我知道上面的線是不正確,但我不完全知道如何有收藏的NotifyCollectionChangedEventHandler委託點的方法OnQueryListCollectionChanged到一個新的線程。

任何幫助表示讚賞。

謝謝。

回答

1

沒有直接的方法讓事件在註冊處理程序的單獨線程上處理。

你可以將事件指向一個方法,然後從那裏產生一個新的線程來完成你的工作,是的,被引發的事件可能會中斷你的主線程,但只有足夠長的時間才能啓動你的新線程。

作爲一個方面說明,我建議不要直接使用線程,而是利用較新的Task類的,請參閱:What is the difference between task and thread?

+0

非常酷! fyi,我的名字是克林頓!今天是個好日子。 – 2013-04-05 15:13:38

+0

謝謝你指出任務。我從來沒有用過它。 – 2013-04-05 15:24:51