簡體   English   中英

前台和后台線程的用例

[英]Use case for foreground and background threads

在C#線程中,默認情況下,新線程是前台線程。

但是后台線程的用例是什么?

另外,主線程在前台或后台線程上運行什么->?

根據MSDN ,前台線程和后台線程之間的主要區別是:

后台線程與前台線程相同,但有一個例外:后台線程不能使托管執行環境保持運行狀態。 一旦所有前台線程都已在托管進程中停止(.exe文件是托管程序集),系統將停止所有后台線程並關閉。

因此,后台線程的用例是不應阻止進程終止的任務。

如果使用線程監視活動(例如套接字連接),請將其IsBackground屬性設置為true,以使該線程不會阻止進程終止。

考慮到兩者之間的差異,UI線程應為前台線程,以便在UI關閉之前一直保持進程運行。 如果它是后台線程,則該進程將在沒有其他前台線程運行時立即停止運行。

編輯:

因為您可以在進程應該終止時向前台線程發出信號,所以我看不到任何無法僅使用前台線程實現的特殊用例。 由於可能需要通知那些線程釋放資源的終止或執行操作,因此,手動發出信號(而不是依靠它們會因為存在背景而終止的事實)是一個更好的選擇。 但是,使它們成為背景只是“以防萬一”的事情,如果由於某種原因它們沒有被發出信號,它們就不會阻止進程終止。

暫無
暫無

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

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