我在C#中遇到BackgroundWorker的问题,希望你能提供帮助。 以下是我的程序中的一些代码
var bwBIG = new BackgroundWorker();
bwBIG.DoWork += (_senderBIG, argsBIG) =>
{
var bw = new BackgroundWorker();
String requestResult = "";
bw.DoWork += (_sender, args) =>
{
requestResult = tempHelper.GetData();
};
bw.RunWorkerCompleted += (_sender, args) =>
{
makeData(requestResult);
};
bw.RunWorkerAsync();
}; //bwBIG.DoWork
bwBIG.RunWorkerCompleted += (_senderBIG, argsBIG) =>
{
prepareData(rtbData.Text);
MessageBox.Show("Data OK");
};
bwBIG.RunWorkerAsync();
它假设运行tempHelper.GetData(),然后运行makeData(requestResult),然后运行prepareData(rtbData.Text)然后运行MessageBox.Show(" Data OK"); 然而,似乎bw根本没有运行,每当我运行代码时,它只是奇怪地跳到MessageBox.Show(" Data OK"); 有什么帮助吗??? 谢谢你的阅读。
答案 0 :(得分:0)
在工作线程中创建backgroundworkerthread是没用的。
我会这样做:
var localCopy = rtbData.Text;
var bwBIG = new BackgroundWorker();
bwBIG.DoWork += (_senderBIG, argsBIG) =>
{
var requestResult = tempHelper.GetData();
makeData(requestResult);
prepareData(localCopy);
MessageBox.Show("Data OK");
}; //bwBIG.DoWork
bwBIG.RunWorkerAsync();
很难看到数据流。