请解释这个 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();
我看到有人写这样的代码
_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();