Getting a reference to the actual background worker

  • Thread starter Thread starter Jerry Spence1
  • Start date Start date
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
 
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
 
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.
 
Back
Top