BackgroundWorker中的C#BackgroundWorker

时间:2017-03-26 18:36:09

标签: c# backgroundworker

我在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"); 有什么帮助吗??? 谢谢你的阅读。

1 个答案:

答案 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();         

很难看到数据流。