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); }