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