3

我是 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);
}
4

1 回答 1

7

DoWork在调用RunWorkerAsync. 翻转那些,应该可以解决它。

此外,将来请在您的问题中粘贴代码,而不是使用外部站点。并尽可能提供最少量的代码来说明问题。让我们和可能有同样问题的人更容易。

于 2012-11-22T22:49:32.313 回答