2011-12-21 63 views
0

我想創建我自己的自定義線程池。我的一個函數有WaitCallback委託作爲參數,我想在基本線程池中使用它來啓動它在集合中的空閒線程中運行。在我自己的線程池中使用waitcallback委託

我的問題是我不知道如何使用WaitCallback委託(msdn和其他網站的唯一示例展示瞭如何將方法放入帶有委託的線程池中)。

您能否告訴我一些關於如何從WaitCallback(因此我可以在某個線程中啓動它)啓動它的方法,或者如果WaitCallback/threadpool以其他方式工作,它是如何工作的。

在此先感謝!

+0

我不想失禮,但如果你不知道如何使用WaitCallback我很懷疑你會寫比MS或HTTP更好的線程池://smartthreadpool.codeplex.com – 2011-12-21 11:54:26

回答

1

WaitCallback只不過是一種自定義委託類型。如果你看到這個聲明,你會發現這個public delegate void WaitCallback(object state);。 因此,您可以使用它將任何方法分配給輸入參數爲object的輸入參數。示例public void MyMethod(object parameter)可以分配給WaitCallback wc = new WaitCallback(MyMethod)

+0

感謝發佈! 我知道如何創建委託WaitCallback,但問題是如何使用這個委託。例如: 例如: myfunction(WaitCallback wcd) { //我應該用wcd來做什麼以便能夠使用方法? } 我想在新線程中開始運行方法。現在是否有可能像這樣使用這種方法,或者線程池以其他方式使用WaitCallback。 – 2011-12-21 13:29:15

0

你打算做什麼並不是很清楚。如果你想火一個新的線程,你可以使用:

public void ExecuteWork(WaitCallback wcb, Object param) 
{ 
    Thread t = new Thread(
     o => 
     { 
      wcb(o); 
     }); 
    t.Start(param); 
} 
+0

感謝您的回答。是的,我想用WaitCallback來啓動一個新的線程。 – 2011-12-21 20:12:29