我看到人们写这样的代码
_Worker = new BackgroundWorker();
_Worker.DoWork += (sender, e) => e.Result = ((Func<string>)e.Argument)();
如果人们不使用e.Result
,他们会为什么分配RunWorkerCompleted
。下面没有使用此分配的代码。
但!他们在下面写了一段使用RunWorkerCompleted
事件的代码。 e
事件在上升时会自动使用e
吗(正好比我指定的ModelAndView
高一些吗?
答案 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();