我在C#应用程序中创建BackgroundWorker
。在DoWork
内部,很少有Web服务被调用。一切正常,但只要DoWork
过程完成,该应用程序就无法响应。此外,我不更新BackgroundWorker
中的任何UI组件。.Net BackgroundWorker无响应
这里是代码正在DoWork
private void bwNQUpdate_DoWork(object sender, DoWorkEventArgs e)
{
int nStatusCode = 0;
QDetails[] pQDetails = null;
string queueName = "test_queue";
int nQLength = cMezeoFileCloud.NQGetLength(ServiceUrl, queueName, ref nStatusCode);
if (nQLength > 0)
pQDetails = cFileCloud.GetData(ServiceUrl, queueName, nQLength, ref nStatusCode);
if (pQDetails != null)
{
for (int n = 0; n < pQDetails[0].nTotalQ; n++)
{
UpdateFromNQ(pNQDetails[n]);
cFileCloud.QValue(ServiceUrl , queueName, 1, ref nStatusCode);
}
}
}
而上RunWorkerCompleted
private void bwNQUpdate_RunWorkerCompleted(object sender, ProgressChangedEventArgs e)
{
MessageBox.Show("Download completed.");
}
的RunWorkerCompleted
执行之后,应用程序没有响应执行。
发布您的代码!如果没有它,很难感觉到会出现什么问题! – MoonKnight 2012-03-05 11:12:18
WPF或表单应用程序? – ebattulga 2012-03-05 11:12:50
发生这种情况时,主线程上执行的代码是什么? – svick 2012-03-05 11:23:02