请解释一下这个C#代码片段

时间:2017-01-01 09:01:52

标签: c# events backgroundworker

我看到人们写这样的代码

_Worker = new BackgroundWorker();
_Worker.DoWork += (sender, e) => e.Result = ((Func<string>)e.Argument)();

如果人们不使用e.Result,他们会为什么分配RunWorkerCompleted。下面没有使用此分配的代码。 但!他们在下面写了一段使用RunWorkerCompleted事件的代码。 e事件在上升时会自动使用e吗(正好比我指定的ModelAndView高一些吗?

1 个答案:

答案 0 :(得分:3)

你是对的。 e.result可用于RunWorkerCompleted事件。因为DoWork在自己的线程中运行,这就是如何将结果重用到主线程的方式。 Here您可以阅读更多相关信息。 请注意,如果您对现代C#多线程目的感兴趣(&gt; = .Net 3.5)

,那么后台工作者有点老了并阅读有关任务库的内容

小例子:

_Worker = new BackgroundWorker();
_Worker.DoWork += (sender, e) => e.Result = ((Func<string>)e.Argument)();

_Worker.RunWorkerCompleted += (sender,e) => textbox.Text = e.Result.ToString();