Есть ли способ получить DoWork EventArgs в RunWorkerCompleted?

Я использую BackgroundWorker для экспорта некоторых данных в Excel. Я хотел бы открыть содержащую папку после сохранения файла в каталог, выбранный с помощью SaveFileDialog.

Я вызываю RunWorkerAsync(dialog.FileName) с параметром ExportFileName в качестве параметра.

Мои потребности будут открывать папку только после успешного сохранения файла. Правильным местом будет метод Worker_RunWorkerCompleted(отправитель объекта, RunWorkerCompletedEventArgs e). Можно ли получить DoWorkEventArgs здесь или мне нужно использовать закрытую переменную, чтобы получить мой exportPath здесь?

1 ответ

Решение

DoWorkEventArgs Объект содержит свойство Result, которое можно использовать для хранения любого объекта, который вы хотите.

Этот объект затем передается в функцию RunWorkerCompleted через RunWorkerCompletedEventArgsРезультат собственности.

Вы можете использовать это свойство для передачи вашего имени файла. например.

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;

    //...
}
Другие вопросы по тегам