簡體   English   中英

C#中的后台線程

[英]Background threading in c#

我目前正在使用C#中的線程和backgroundworker。 我有的問題是這個。 說我有一個用於用戶交互的主線程和一個用於處理txt文件(各種編輯操作)的輔助線程。 然后,在backgroundthread運行一次其內容之后,我將啟動一個計時器,執行另一組操作。 我希望計時器運行x分鍾的這些新操作在同一后台線程中運行,而不運行計時器啟動之前運行的與txt相關的先前操作。 如何才能做到這一點?

您應該只使用System.Timers.Timer ,它將在線程池線程上運行其回調。

您在哪個特定線程上運行都無關緊要(只要它不是UI線程即可)。
如果由於某種原因確實很重要(例如,如果您使用的是單線程COM對象),則需要創建一個專用線程,以使用線程安全的委托隊列等待事情發生。

您想使用事件驅動方法從UI線程對工作線程執行函數調用。 完成此操作的方法是使用BeginInvoke,您可以在此處詳細了解如何使用它: http : //www.dreamincode.net/forums/topic/35616-cross-thread-communication-in-c%23/

將一個while循環添加到后台工作者的末尾:

while(!stop){Thread.Sleep(yourIntervalinMilliseconds); ...}

我會在您希望將其踢出時在該線程所處的位置創建一個止停螺栓。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM