Exemple #1
0
 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));
     }
 }
Exemple #2
0
        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));
            }
        }