有没有办法在RunWorkerCompleted中接收DoWork EventArgs?

时间:2015-10-21 10:38:05

标签: multithreading backgroundworker args

我使用BackgroundWorker将一些数据导出到Excel。 将文件保存到通过SaveFileDialog选择的目录后,我想打开包含文件夹。

我使用ExportFileName作为参数调用RunWorkerAsync(dialog.FileName)。

我的需求是仅在成功保存文件时打开文件夹。 正确的位置是Worker_RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)方法。可以在这里获取DoWorkEventArgs,还是必须使用私有变量来获取我的exportPath?

1 个答案:

答案 0 :(得分:1)

DoWorkEventArgs对象包含一个名为结果的属性,可用于存储您想要的任何对象。

然后通过RunWorkerCompletedEventArgs结果属性将此对象传递给RunWorkerCompleted函数。

您可以使用此属性传递文件名。 例如。

void Worker_DoWork(object sender, DoWorkEventArgs e)
{
    string fileName = (string)e.Argument;

    //...
    e.Result = fileName;
}

void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    string fileName = (string)e.Result;

    //...
}