![](/img/trans.png)
[英]Is it possible to pass an Action delegate to ThreadPool.QueueUserWorkItem?
[英]ThreadPool.QueueUserWorkItem adding delegate?
通過閱讀一些代碼,我發現:
ThreadPool.QueueUserWorkItem(delegate { this.SaveInternal(); });
為什么有人要把delegate
放在這里?
這樣的Usinng委托只是傳遞任何您不關心參數的有效委托,同時又使編譯器滿意的捷徑。 否則,您將必須傳遞與委托簽名匹配的方法。
最明顯的答案是因為沒有它,代碼將無法編譯。 例如:
ThreadPool.QueueUserWorkItem( { this.SaveInternal(); });
給出Invalid expression term '{'
QueueUserWorkItem
需要一個WaitCallback參數,該參數是一個使用Object
參數的方法。 您所擁有的長格式是:
ThreadPool.QueueUserWorkItem((state) => { this.SaveInternal(); });
與以下內容相同:
void Temp(Object state)
{
this.SaveInternal();
}
ThreadPool.QueueUserWorkItem(Temp);
添加delegate { this.SaveInternal(); }
delegate { this.SaveInternal(); }
允許編譯器使用類型推斷來解決表觀歧義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.