请解释这个 C# 代码片段

Please explain this C# code snippet

我看到有人写这样的代码

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

为什么人们在不使用的情况下分配 e.Result。下面没有使用此分配的代码。 但!他们在下面写了一段使用 RunWorkerCompleted 事件的代码。 RunWorkerCompleted事件是否在上升时自动使用e(正是我分配的这个e)?

你是对的。 e.result 可用于 RunWorkerCompleted 事件。因为 DoWork 在自己的线程中运行,所以您可以通过这种方式将结果重用到主线程。 Here 您可以阅读更多相关信息。 请注意,backgroundworker 有点老派,如果您对现代 C# 多线程目的感兴趣,请阅读任务库 (>=.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();