示例#1
0
 /// <summary>
 /// Initialisiert das Singletonanwendungsobjekt. Dies ist die erste Zeile von erstelltem Code
 /// und daher das logische Äquivalent von main() bzw. WinMain().
 /// </summary>
 public App()
 {
     SignalFileLoggerProvider.ForceAddUILog(Utils.GetAppStartMessage());
     Instance = this;
     SignalLogging.SetupLogging(true);
     this.InitializeComponent();
     this.UnhandledException += OnUnhandledException;
     this.Suspending         += App_Suspending;
     this.Resuming           += App_Resuming;
 }
示例#2
0
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            SignalFileLoggerProvider.ForceAddBGLog(LibUtils.GetBGStartMessage());
            SignalLogging.SetupLogging(false);
            Deferral               = taskInstance.GetDeferral();
            ToastNotifier          = ToastNotificationManager.CreateToastNotifier();
            taskInstance.Canceled += OnCanceled;
            bool locked = LibUtils.Lock(5000);

            Logger.LogTrace("Locking global finished, locked = {0}", locked);
            if (!locked)
            {
                Logger.LogWarning("App is running, background task shutting down");
                Deferral.Complete();
                return;
            }
            GlobalResetEvent = LibUtils.OpenResetEventUnset();
            Task.Run(() =>
            {
                GlobalResetEvent.WaitOne();
                Logger.LogInformation("Background task received app startup signal");
                ResetEvent.Set();
            });
            try
            {
                Handle = SignalHelper.CreateSignalLibHandle(true);
                Handle.SignalMessageEvent += Handle_SignalMessageEvent;
                Handle.BackgroundAcquire();
                ResetEvent.WaitOne();
            }
            catch (Exception e)
            {
                Logger.LogError("Background task failed: {0}\n{1}", e.Message, e.StackTrace);
            }
            finally
            {
                Logger.LogInformation("Background task shutting down");
                Handle.BackgroundRelease();
                LibUtils.Unlock();
                Deferral.Complete();
            }
        }
        public static async Task EportUIDebugLog()
        {
            FileSavePicker savePicker = new FileSavePicker();

            savePicker.FileTypeChoices.Add("Plain Text", new List <string>()
            {
                ".txt"
            });
            savePicker.SuggestedFileName = "Signal-Windows.ui.log";
            StorageFile file = await savePicker.PickSaveFileAsync();

            if (file != null)
            {
                await Task.Run(() =>
                {
                    SignalFileLoggerProvider.ExportUILog(file);
                });
            }
            else
            {
                Logger.LogTrace("No file was selected");
            }
        }