Actual drawing must be done in the UIThread. This is the main thread running the application and handling the user interface. You need to tell the UI Thread to invoke the method so it is allowed to do screen updates. In the backgroundworker you would only do all the work prior to the actual drawing. When the work is done you then invoke a method that updates the UI. That method should check if an invoke is required, meaning that is another thread is calling the method, it will automatically invoke itself to be executed on the UI thread.
If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf AccessControl))
Else
Check this link for more info:
http://msdn.microsoft.com/en-us/library/ms171728%28v=vs.85%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1[
^]
Good luck!