private void Flow() { try { isRunning = true; instance = (IExtension)Activator.CreateInstance(extensionType); SendSignal(Signals.ON_CREATED, new ExtensionArgs(this, Wrapper)); ExitCode = instance.Main(Data); } catch (ThreadAbortException) { ExitCode = (int)ExtensionExitCodes.Killed; } catch (Exception e) { ExitCode = (int)ExtensionExitCodes.Exception; SendSignal(Signals.ON_EXCEPTION, e); string fmt = App.GetPublicResouce <string>("OpenFxExceptionMsgTitleFmt"); fmt = string.Format(fmt, Wrapper.Info.Name); string sketch = App.GetPublicResouce <string>("OpenFxExceptionSketch"); Ux.RunOnUIThread(() => { BaseApi.ShowException(fmt, sketch, e.ToString()); }); } finally { SendSignal(Signals.COMMAND_DESTORY); isRunning = false; Finished?.Invoke(this, new ThreadFinishedEventArgs(this)); } }
private void Flow() { try { isRunning = true; instance = (IExtension)Activator.CreateInstance(extensionType); Result = instance.Main(Args); } catch (ThreadAbortException) { Result = null; } catch (Exception e) { var appManager = LakeProvider.Lake.Get <IAppManager>(); Result = e; SLogger <ExtensionTask> .Warn($"{extensionType.Name}-extension error", e.InnerException); string fmt = appManager.GetPublicResouce <string>("OpenFxExceptionMsgTitleFmt"); fmt = string.Format(fmt, Wrapper.Info.Name); string sketch = appManager.GetPublicResouce <string>("OpenFxExceptionSketch"); appManager.ShowException(fmt, sketch, e.GetType() == typeof(TargetInvocationException) ? e.InnerException : e); } finally { instance.Dispose(); isRunning = false; Finished?.Invoke(this, new TaskFinishedEventArgs(this)); } }