2014-12-27 54 views
0

請考慮以下代碼。背景線程正在顯示出來

在主

for (int i = 0; i <= 9; i++) 
{ 
    ThreadPool.QueueUserWorkItem(Hi,i); 
} 

static void Hi(object arg) 
{ 
    int n = (int)arg; 
    Console.WriteLine("Thread ID:{0} IsBackground:{1} HI Joshua.. You got:{2} ", Thread.CurrentThread.ManagedThreadId, 
     Thread.CurrentThread.IsBackground,n); 

} 

我得到以下輸出

Thread ID:10 IsBackground:True HI Joshua.. You got:2 
Thread ID:10 IsBackground:True HI Joshua.. You got:3 
Thread ID:10 IsBackground:True HI Joshua.. You got:4 
Thread ID:10 IsBackground:True HI Joshua.. You got:6 
Thread ID:10 IsBackground:True HI Joshua.. You got:7 
Thread ID:10 IsBackground:True HI Joshua.. You got:8 
Thread ID:10 IsBackground:True HI Joshua.. You got:9 
Thread ID:11 IsBackground:True HI Joshua.. You got:5 
Thread ID:13 IsBackground:True HI Joshua.. You got:1 
Thread ID:12 IsBackground:True HI Joshua.. You got:0 

我的問題是,由於線程池線程具有背景屬性真那麼,爲什麼也會有越來越我的輸出顯示了? 如果有人能夠引導我參考或書籍,我可以得到線程池工作的例子,這也將是很好的。

回答

1

我想你可能會感到困惑什麼background thread是。

後臺線程與前臺線程相同,但後臺線程不會阻止進程終止。

術語「後臺線程」確實提示了一些在後臺運行的東西,用戶看不到,但那與文檔相反。

您可以閱讀更多關於後臺線程here以及更多關於線程的更多信息herehere

1

當控制檯應用程序啓動時,操作系統自動 聯營三個I/O流與控制檯:標準輸入流, 標準輸出流和標準錯誤輸出流。您的 應用程序可以從標準輸入流中讀取用戶輸入;將標準數據寫入 到標準輸出流;並將錯誤數據寫入 標準錯誤輸出流。這些流作爲Console.In,Console.Out和Console.Error屬性的值呈現給您的 應用程序。默認情況下,In屬性的值是 System.IO.TextReader對象,Out和Error 屬性的值是System.IO.TextWriter對象。但是,您可以將這些屬性設置爲 以表示不代表控制檯的流;對於 示例,可以將這些屬性設置爲表示文件的流。 要重定向標準輸入,標準輸出或標準錯誤 數據流,請分別調用Console.SetIn,Console.SetOut或Console.SetError 方法。使用這些流的I/O操作同步爲 ,這意味着可以從多個線程讀取數據流,或者可以向這些數據流寫入 。

Console Class

線程池的線程是後臺線程,但他們可以訪問靜態Console類,並調用它的靜態方法WriteLine和輸出寫。

您可以瞭解更多關於線程在C#here

+0

ohh我看到...... – 2014-12-27 18:19:28