2011-03-30 16 views
3

我正在研究一個小應用程序,它將使用線程來提出一些web請求。我想當按下X按鈕時,一個主Thread開始,並且將管理ThreadPool,因爲根據第一組線程的結果,我將不得不打開更多或更少的線程。ThreadPool可以從C#中的線程使用嗎?

這是一個很好的做法還是有更好的方法來做到這一點?

+0

「管理線程池」是什麼意思? – BrokenGlass 2011-03-30 17:44:05

+1

你的問題很難理解。你可以嘗試擴展你試圖解決的問題。發佈一些示例代碼或僞代碼也可以提供幫助。 – 2011-03-30 17:44:45

回答

1

ThreadPool肯定可以在C#中的任何線程中使用。

比方說,當你點擊你的用戶界面的按鈕,它會召喚:

object state = ...some value...; 
ThreadPool.QueueUserWorkItem(MyHandler, state); 

... 

private void MyHandler(object state) 
{ 
    object newState = ... do something with state ... 
    ThreadPool.QueueUserWorkItem(HandleMoreWorkToDo, newState); 
} 

你一定要小心你在處理程序使用哪些資源,這樣他們就不能修改的狀態一個正在另一個線程上操作的對象。

0

如果我理解你,你想要釋放一個線程,然後讓它使用線程池來創建額外的線程。如果這是正確的假設,您可以輕鬆地做到這一點。

如果您正在討論自己管理線程,那是一個選項。試圖從你自己的代碼中真正管理線程池,這是討厭的,不適合嘗試控制GC。

或多或少的線程是線程池應該幫助你的。

相關問題