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

标签 c# winforms visual-studio backgroundworker

我正在使用 VS 2015 winform 后台 worker 来完成一些任务。

我有 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 在完成任务运行时显示哪些条目未处理

最佳答案

您可以使用 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>);
    }
}

关于c# - 在 DoWork() 完成后将变量传递给 RunWorkerCompleted(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40934282/

相关文章:

c# - 使用 JsonConverterAttribute 时自定义继承 JsonConverter 失败

c# - WinForm 和循环

c# - 当前上下文中不存在名称 'test1'

c# - 如何使用 C# 在嵌套网格中获取按钮查找控件值

c# - 如何在 IIS 中托管 WCF 应用程序?

c# - 在关注性能时,为 DateTime.Today 使用变量有多重要?

c# - 更改 ASP.NET MVC 项目命名空间后出现编译错误?

c# - 如何在 app.config 中注册命名空间

.net - 窗口句柄被销毁时是否有事件

C++ Visual Studio-运算符重载中的空循环会导致调试错误?