在DoWork()完成后将变量传递给RunWorkerCompleted()

时间:2016-12-02 14:17:03

标签: c# winforms visual-studio backgroundworker

我正在使用VS 2015 winform后台工作人员来完成一些任务。

我有DoWork()方法使用List<string> myList,一旦某个过程完成,它会删除列表中的每个条目。我的目标是让用户知道myList中的哪个条目未被处理(因为它在每个进程之后删除一个条目,最后留下的是未处理的条目)。为此,我打算将myList变量传递给RunWorkerCompleted(),但不仅我不知道如何做到这一点,我甚至不确定这是否是最好的方法。

是否有更好的方法让用户知道myList中哪个条目未被处理,如果没有,我如何将变量从DoWork()传递给RunWorkerCompleted()?

当前的RunWorkerCompleted()方法:

private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if(e.Error != null)
    {
        MessageBox.Show(e.Error.ToString());
    }
    else
    {
        MessageBox.Show("Done!");
    }
}

基本上,我希望MessageBox显示运行任务时未处理的条目

1 个答案:

答案 0 :(得分:12)

您可以使用RunWorkerCompletedEventArgs

的结果

请参阅this

对于一些不想阅读的人,请使用此

private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
    //Do your work
    e.Result = mylist;
}

private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if(e.Error != null)
    {
        MessageBox.Show(e.Error.ToString());
    }
    else
    {
        ShowResult(e.Result as List<string>);
    }
}