void ReportCompletion(IAsyncResult asyncResult) { System.Runtime.Remoting.Messaging.AsyncResult ar = (System.Runtime.Remoting.Messaging.AsyncResult)asyncResult; DoWorkEventHandler del; del = (DoWorkEventHandler)ar.AsyncDelegate; DoWorkProviderEventArgs doWorkArgs = (DoWorkProviderEventArgs)ar.AsyncState; object result = null; Exception error = null; try { del.EndInvoke(asyncResult); result = doWorkArgs.Result; } catch (Exception exception) { error = exception; } RunWorkerCompletedProviderEventArgs completedArgs = new RunWorkerCompletedProviderEventArgs(result, error, doWorkArgs.Cancel); OnRunWorkerCompleted(completedArgs); }
public void RunWorkerAsync(object argument) { m_CancelPending = false; if (DoWork != null) { DoWorkProviderEventArgs args = new DoWorkProviderEventArgs(argument); AsyncCallback callback; callback = new AsyncCallback(ReportCompletion); DoWork.BeginInvoke(this, args, callback, args); } }
abstract public Movie LoadMovie(XmlDocument _movieXml, BackgroundWorker worker, DoWorkProviderEventArgs e);
abstract public Movie LoadMovie(XmlNode movieNode, BackgroundWorker worker, DoWorkProviderEventArgs e);