![](/img/trans.png)
[英]c# backgroundWorker not raising ProgressChanged or RunWorkerCompleted events
[英]C# BackgroundWorker skips DoWork and goes straight to RunWorkerCompleted
我是C#的新手,所以對我來說很容易!
到目前為止 - 我有一個控制台應用程序,它可以監聽客戶端連接並相應地回復客戶端。
我還有一個帶有按鈕和文本框的WPF表單。 該按鈕啟動一些代碼以作為BackgroundWorker連接到服務器,然后在將其附加到文本框的末尾之前等待響應。
這很好,一次。 有時兩次。 但隨后它一直在崩潰 - 事實證明DoWork塊根本沒有被調用,而是直接進入RunWorkerCompleted。 當然,.result是空白的,因此嘗試將其轉換為字符串失敗。
這是一個菜鳥的錯誤嗎? 我試過在互聯網上搜索各種說法,但沒有看到任何有用的東西......
這是到目前為止的代碼: http : //pastebin.com/ZQvCFqxN - 有很多調試輸出來自我試圖弄清楚到底出了什么問題。
這是調試輸出的結果: http : //pastebin.com/V412mppX
任何幫助非常感謝。 謝謝!
編輯:相關代碼后修復 (感謝下面的Patrick Quirk)是:
public void dorequest(string query)
{
request = new BackgroundWorker();
request.WorkerSupportsCancellation = true;
request.WorkerReportsProgress = true;
request.ProgressChanged += request_ProgressChanged;
request.DoWork += request_DoWork;
request.RunWorkerCompleted += request_RunWorkerCompleted;
request.RunWorkerAsync(query);
}
您在調用RunWorkerAsync
后附加了DoWork
處理程序。 翻轉周圍的那些應該修復它。
此外,將來請在您的問題中粘貼代碼,而不是使用外部網站。 並在可能的情況下提供最少量的代碼來證明問題。 使我們和可能遇到同樣問題的人更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.