簡體   English   中英

C#中的線程錯誤

[英]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.

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