簡體   English   中英

ThreadPool.QueueUserWorkItem用例

[英]ThreadPool.QueueUserWorkItem use case

我試圖以這種方式使用該方法:

public void Method()
{
        ThreadPool.QueueUserWorkItem(() =>
        {
            while(!paused)
            {
                ThreadPool.QueueUserWorkItem(() => {...);
            }
        });
    }
}

問題來了,因為它在第一次調用時拋出了編譯錯誤。

錯誤CS1593:委托System.Threading.WaitCallback' does not take 0'參數

知道怎么做沒有參數嗎? ,任何替代?

你可以只提供lambda表達式的參數,並忽略它:

ThreadPool.QueueUserWorkItem(ignored =>
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(alsoIgnored => {...});
    }
});

或者使用匿名方法:

ThreadPool.QueueUserWorkItem(delegate
{
    while(!paused)
    {
        ThreadPool.QueueUserWorkItem(delegate {...});
    }
});

如果您不關心匿名方法的參數,則不必說明它們。

ThreadPool.QueueUserWorkItem需要System.Threading.WaitCallback委托作為其參數。 這個委托有一個參數,而你的lambda表達式沒有。 如果要忽略可以使用的參數:

ThreadPool.QueueUserWorkItem(_ =>
{
    //...
});

您傳遞的委托需要一個參數。 如果要忽略它,只需用任何變量名替換括號即可。

暫無
暫無

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

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