我是C#的新手,所以对我很轻松!
到目前为止 - 我有一个控制台应用程序,它会侦听客户端连接并相应地回复客户端。
我还有一个带有按钮和文本框的WPF表单。该按钮启动一些代码以作为BackgroundWorker连接到服务器,然后在将其附加到文本框的末尾之前等待响应。
这很好,一次。有时两次。但随后它一直在崩溃 - 事实证明DoWork块根本没有被调用,而是直接进入RunWorkerCompleted。当然,.result是空白的,因此尝试将其转换为字符串失败。
这是一个菜鸟错误吗?我曾尝试在互联网上搜索各种说法,但没有发现任何有用的东西......
这是到目前为止的代码:http://pastebin.com/ZQvCFqxN - 我有很多调试输出,试图弄清楚到底出了什么问题。
这是调试输出的结果:http://pastebin.com/V412mppX
任何帮助非常感谢。谢谢!
编辑:相关代码 post-fix (感谢下面的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);
}
答案 0 :(得分:7)
您在致电DoWork
后附加了RunWorkerAsync
处理程序。翻转周围的那些应该修复它。
此外,将来请在您的问题中粘贴代码,而不是使用外部网站。并在可能的情况下提供最少量的代码来证明问题。使我们和可能遇到同样问题的人更容易。