mr_*_*man 3 .net c# backgroundworker
我是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);
}
Run Code Online (Sandbox Code Playgroud)
你DoWork在调用后附加了你的处理程序RunWorkerAsync.翻转周围的那些应该修复它.
此外,将来请在您的问题中粘贴代码,而不是使用外部网站.并在可能的情况下提供最少量的代码来证明问题.使我们和可能遇到同样问题的人更容易.