示例#1
0
 public void RunWorkerAsync(object pArgument)
 {
     cancelPending = false;
     if (DoWork != null)
     {
         WorkerEventArgs _args     = new WorkerEventArgs(pArgument);
         AsyncCallback   _callback = new AsyncCallback(reportCompletion);
         //NOTE: ? why do we need ar here ?
         ar = DoWork.BeginInvoke(this, _args, _callback, _args);
     }
 }
示例#2
0
        private void reportCompletion(IAsyncResult pAsyncResult)
        {
            AsyncResult        _asyncResult = (AsyncResult)pAsyncResult;
            DoWorkEventHandler _del         = (DoWorkEventHandler)_asyncResult.AsyncDelegate;

            WorkerEventArgs _doWorkArgs = (WorkerEventArgs)pAsyncResult.AsyncState;
            object          _result     = null;
            Exception       _error      = null;

            try {
                _del.EndInvoke(pAsyncResult);
                _result = _doWorkArgs.Result;
            }
            catch (Exception _ex) {
                _error = _ex;
            }

            WorkCompletedEventArgs _completedArgs = new WorkCompletedEventArgs(_result, _error, _doWorkArgs.Cancel);

            onWorkerCompleted(_completedArgs);
        }