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

Is there a way to receive DoWork EventArgs in RunWorkerCompleted?

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

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

我的需求是只有在文件保存成功后才打开文件夹。 正确的位置是 Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 方法。是否可以在此处获取 DoWorkEventArgs,或者我是否必须使用私有变量在此处获取我的 exportPath?

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

此对象然后通过 RunWorkerCompletedEventArgsResult 属性.

传递给 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;

    //...
}