【发布时间】:2014-04-27 04:25:42
【问题描述】:
我正在尝试使用 BackgroundWorker 在单独的线程上执行任务。
我可以将单个参数传递给 BackgroundWorker,如下所示:
向 BackgroundWorker 发送参数:
Private Sub btnPerformTasks_Click(sender As System.Object, e As System.EventArgs) Handles btnPerformTasks.Click
Dim strMyArgument as String = "Test"
BW1.RunWorkerAsync(strMyArgument)
End Sub
在 BackgroundWorker 中检索参数:
Private Sub BW1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BW1.DoWork
Dim strMyValue As String
strMyValue = e.Argument 'Test
End Sub
RunWorkerAsync() 只有 2 个重载方法。一种不带参数,一种只带一个参数。
我想知道:
- 如何将多个值传递给
BW1.RunWorkerAsync() - 如何从
BW1_DoWork内部检索这些多个值
【问题讨论】:
-
一个参数就足以传递具有所需属性的对象。写一个小助手类。或者使用 lambda 表达式。
-
@HansPassant 我相信 pacane 提供的答案是辅助类方法。你能展示如何使用 lambda 表达式来实现这一点吗?
-
@HansPassant 这个问题上面已经说得很清楚了。我可以使用 pacane 回答的类方法来完成问题所需的内容。我只想知道通过使用 lambda 表达式是否可以更有效地做同样的事情。
标签: vb.net multithreading arguments backgroundworker argument-passing