コード例 #1
0
        private void RunAsync(object value, object contextInfo = null, ChoAbortableAsyncCallback callback = null)
        {
            Verify();

            if (_topPlugIn == null)
            {
                return;
            }

            ActivePlugIn = null;
            _result      = ChoAbortableQueuedExecutionService.Global.Enqueue(() =>
            {
                if (_topPlugIn == null)
                {
                    return(null);
                }

                _isRunning = true;

                //lock (_padLock)
                //{
                try
                {
                    _topPlugIn.ContextInfo = contextInfo;
                    _topPlugIn.BeforeRun  += OnBeforePlugInRun;
                    _topPlugIn.AfterRun   += OnAfterPlugInRun;

                    return(_topPlugIn.Run(value));
                }
                finally
                {
                    //_topPlugIn.BeforeRun -= BeforePlugInRun;
                }
                //}
            },
                                                                             callback, null, -1);
        }