我有一個關於事件.NET(C#)的問題。我必須爲幾種情況編寫代碼,其中我有一個後臺任務正在運行,並且我想通知主線程或控制器類發生了某些事情,例如已完成任務或已完成複製文件,但是我不' t希望後臺任務等待主線程的委託來處理事件。如何在不等待事件偵聽器運行的情況下觸發事件?
我想做一些類似消息傳遞的事情:發送消息,但誰在乎他們如何處理它。
例如:
一個類被寫入順序處理幾個過程,一個在另一個之後。每個進程都需要在後臺線程上運行。當工作完成時,事件觸發並告訴控制器它已完成(比方說使用OnCompleted()方法)
問題是如果控制器的事件處理程序用於啓動後續進程,則先前進程的OnComplete方法停留在調用堆棧上(永遠不會執行完畢),直到所有進程完成。
在這種情況下,後臺任務如何通知控制器類工作完成而不在堆棧上保留事件提升方法?
示例2:備份程序。
後臺線程運行將每個文件複製到目標。背景需要通知 UI是最後一個被複制的文件,但它不需要等待UI更新。相反,它只是想說,「順便說一句,這裏有一些信息,現在讓我回去工作。」事件監聽器不應該阻止事件提升器的處理。
我該怎麼做在C#中? – 2009-05-21 00:35:14
好吧,你似乎知道如何開啓另一個線程。只要有第一個事件監聽器這樣做(只要你用事件創建對象,分配處理器 – 2009-05-21 23:10:05