public void RunWorkerAsync (object argument)
{
if (IsBusy)
throw new InvalidOperationException ("The background worker is busy.");
async = AsyncOperationManager.CreateOperation (this);
ProcessWorkerEventHandler handler =
new ProcessWorkerEventHandler (ProcessWorker);
handler.BeginInvoke (argument, async, CompleteWorker, null, null);
}