2014-01-11 52 views
0

后台工作,我有,我不能工作了几个问题:实现接受我努力学习线程参数

想象我有这个在我的代码:

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 

我想知道这是否是那种我应该做的事,如果不是如何/我在哪里可以提高代码实现我想要的结果,但我是埃尔我有点超出了我的深度。

+1

请参阅此答案:http://stackoverflow.com/questions/4807152/sending-arguments-to-background-worker – dcp

回答

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