【问题标题】:Implementing a background worker that accepts arguments [duplicate]实现一个接受参数的后台工作者[重复]
【发布时间】:2014-01-11 01:28:23
【问题描述】:

我正在尝试学习线程,但有一些我无法解决的问题:

想象一下我的代码中有这个:

Public Sub Compute(ByVal argument1 As String, ByVal argument2 As String)
       ' Code to be run that I'd like on a background worker thread
End Sub

我想把它变成这样:

Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click
    BackGroundWorker1.RunWorkerAsync(argument1, argument2)
End Sub

Private Sub BackGroundWorker1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles BackGroundWorker1.DoWork
    'Code to be run that I'd like on a background worker thread.
    'This section should be able to use argument1 and argument2.
End Sub

我想知道这是否是我应该做的事情,如果不是,我可以如何/在哪里改进代码以实现我想要的结果,但我觉得我有点超出我的深度有了这个。

【问题讨论】:

标签: vb.net visual-studio-2013


【解决方案1】:

使用类对象:

Public Class Foo
 Public foobar As String
 Public fubar As String
End Class

Dim _foo As New Foo
_foo.foobar = "great foo"
_foo.fubar = "wonderful foo"

worker.RunWorkerAsync(_foo)

然后将其转换回 DoWork 事件中。

Private Sub worker_DoWork(...) Handles ...
 Dim foo = DirectCast(e.Argument, Foo)
 'now you can use the properties you set on the Foo object.
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多