Getting a reference to the actual background worker

J

Jerry Spence1

I define a Background Worker as follows:

Dim MyWorker(10) As System.ComponentModel.BackgroundWorker

For n=1 to 10
MyWorker(n)= New System.ComponentModel.BackgroundWorker
AddHandler MyWorker (n).DoWork, AddressOf MyWorker_DoWork
AddHandler MyWorker (n).RunWorkerCompleted, AddressOf MyWorker_AllDone
Next

I launch the worker as follows with a parameter 'n'

If Myworker(n).IsBusy = False Then
MyWorker(n).RunWorkerAsync(n)
End If

When the thread ends, I want to get a reference to the actual thread that
has ended. This will be the parameter 'n'. I can get a reference to the
thread itself but I can't see a way of getting to 'n'


Sub MyWorker_AllDone(ByVal sender As Object, ByVal e As
System.ComponentModel.RunWorkerCompletedEventArgs)
Dim c As System.ComponentModel.BackgroundWorker =
DirectCast(sender, System.ComponentModel.BackgroundWorker)


'What can I put here?

End Sub

-Jerry
 
A

Armin Zingler

Jerry Spence1 said:
Sub MyWorker_AllDone(ByVal sender As Object, ByVal e As
System.ComponentModel.RunWorkerCompletedEventArgs)
Dim c As System.ComponentModel.BackgroundWorker =
DirectCast(sender, System.ComponentModel.BackgroundWorker)


'What can I put here?

End Sub


Index = Array.IndexOf(MyWorker, sender)


Armin
 
P

Phill W.

Jerry said:
Dim MyWorker(10) As System.ComponentModel.BackgroundWorker
For n=1 to 10
MyWorker(n)= New System.ComponentModel.BackgroundWorker
AddHandler MyWorker (n).DoWork, AddressOf MyWorker_DoWork
AddHandler MyWorker (n).RunWorkerCompleted, AddressOf MyWorker_AllDone
Next

I launch the worker as follows with a parameter 'n'

If Myworker(n).IsBusy = False Then
MyWorker(n).RunWorkerAsync(n)
End If

When the thread ends, I want to get a reference to the actual thread that
has ended. This will be the parameter 'n'. I can get a reference to the
thread itself but I can't see a way of getting to 'n'

I've not used the BackgroundWorker yet, but if it's anything like the
other asynchronous methods, your 'n' should be taken as "state" data
which, /if/ I read MSDN right, you should be able to get hold of through
e.UserState.

HTH,
Phill W.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top