[英]Threading error in C#
好的,所以我在項目中使用這一行代碼
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(ProcessReport));
但它引發以下錯誤
“ ProcessReport”的重載不匹配委托“ System.Threading.WaitCallback”
我將上述行替換為以下行:
Thread t = new Thread(new ThreadStart(ProcessReport));
t.Start();
這消除了錯誤,但這是正確的方法。 我不能在那里查看輸出,因為我是一家公司的實習生,這是整個大型項目的一部分。 請幫忙。
我不能發布整個ProcessReport,因為我不允許這樣做,但是它以以下內容開頭:
公共無效ProcessReport()
我的假設是,既然這樣編譯:
new ThreadStart(ProcessReport)
您的ProcessReport
方法看起來像這樣:
void ProcessReport()
{
}
QueueUserWorkItem
帶有一個WaitCallback
委托,該委托需要傳遞一個對象作為參數。 因此,將方法的簽名更改為如下所示:
void ProcessReport(object state)
{
}
而且你應該沒事。 如果不需要使用state
參數,則可以忽略它,但是它的值是您作為QueueUserWorkItem
的第二個參數傳入的值。 由於使用的重載不會將對象傳遞給QueueUserWorkItem
,因此它將始終為null。
可能發生的問題之一
線程t =新線程(new ThreadStart(ProcessReport));
t.Start();
就是如果您以這種方式啟動了這么多線程而沒有檢查任何條件,則在某些情況下您的程序很可能崩潰甚至系統崩潰。 但是,如果是一個應用程序,必須在啟動該線程之前發生事件,所以您的代碼應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.