c# - 设置 RunWorkerCompleted 值

标签 c# backgroundworker

如果我有一个后台 worker 在它的工作中做一些任务

    String val= getVal("Val");
    byte[] b = (byte[])e.Argument;

    b = getData.FromPlace(val);

如何将 b 的 vakue 传递给 runworkercompleted 方法?

最佳答案

你可以使用闭包

void Main()
{

    var bw = new BackgroundWorker();

    byte[] b;

    bw.DoWork += (sender, args) => {

        b = DoStuff();
    };
}

byte[] DoStuff() {

    String val= getVal("Val");
    byte[] b = (byte[])e.Argument;

    b = getData.FromPlace(val);

    return b;
}

您还可以在事件参数对象上使用 return Result 属性。我认为这种方式提供了更大的灵 active 。

void Main()
{
    var bw = new BackgroundWorker();

    bw.DoWork += (sender, args) => {

        args.Result = DoStuff();
    };

    bw.RunWorkerCompleted += (sender, args) =>  {
        var result = args.Result as byte[];
    };

    bw.RunWorkerAsync();
}

byte[] DoStuff() {
    return new byte[10];
}

关于c# - 设置 RunWorkerCompleted 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499657/

相关文章:

c# - 解析大型 json

c# - WCF 初始化慢与 .NET 远程处理

c# - 如何生成 .CIF(目录交换格式)文件格式的报告?

wpf - 如何在BackgroundWorker中创建WPF窗口?

c# - 从 BackgroundWorker 中的剪贴板获取数据

c# - Linq 递归搜索

c# - 给定字符串的特定索引号,如何在 C# 中获取完整的单词?

c# - 在这种情况下我应该使用后台 worker 还是计时器?

c# - 使用可视化 C# 后台 worker 来更新数据库?

c# - 如何在Windows窗体上有效地多线程?