簡體   English   中英

C#WaitCallBack - ThreadPool

[英]C# WaitCallBack - ThreadPool

WaitCallback委托的確切目的是什么?

WaitCallback callback = new WaitCallback(PrintMessage);
ThreadPool.QueueUserWorkItem(callback,"Hello");

static void PrintMessage(object obj)
{
   Console.WriteLine(obj);
}

我可以在“TheadPool”中表示“等待”,直到線程可用。一旦可用,執行目標?

在這種情況下,WaitCallback表示一個指向將在線程池中的線程上執行的函數的指針。 如果沒有可用的線程,它將等待一個線程被釋放。

是的,您的回調方法在線程池線程可用時執行。 在這個例子中,你可以看到我傳遞PooledProc作為回調指針。 當主線程休眠時調用它。

public static void Main()
    {

        ThreadPool.QueueUserWorkItem(new WaitCallback(PooledProc));
        Console.WriteLine("Main thread");            
        Thread.Sleep(1000);
        Console.WriteLine("Done from Main thread");
        Console.ReadLine();
    }

    // This thread procedure performs the task.
    static void PooledProc(Object stateInfo)
    {         
        Console.WriteLine("Pooled Proc");
    }

顯然,QueueUserWorkItem的參數類型是WaitCallback委托類型,如果你檢查它,你可能會注意到WaitCallBack的簽名如下:

public delegate void WaitCallback(object state);

PooledProc方法具有相同的簽名,因此我們可以為回調傳遞相同的簽名。

來自msdn

WaitCallback表示要在ThreadPool線程上執行的回調方法。 通過將回調方法傳遞給WaitCallback構造函數來創建委托。

通過將WaitCallback委托傳遞給ThreadPool .. ::。QueueUserWorkItem來將執行任務排隊。 當線程池線程可用時,將執行回調方法。

System.Threading.WaitCallBack

暫無
暫無

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

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