public StatusBlinker()
        {
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    Task.Delay(1000).Wait();

                    var activeFlags = new NetworkStatusEnum[0];
                    lock (lockFlags)
                    {
                        activeFlags = Enum.GetValues(typeof(NetworkStatusEnum)).Cast <NetworkStatusEnum>()
                                      .Where(i => flagsStatus.HasFlag(i))
                                      .ToArray();
                    }

                    int idx = 0;
                    foreach (var f in activeFlags)
                    {
                        idx++;
                        EmitStatus?.Invoke(this, f);
                        if (idx < activeFlags.Length)
                        {
                            Task.Delay(1000).Wait();
                        }
                    }
                }
            });
        }
Exemple #2
0
 internal void WrapNetworkStatusInNewTask(NetworkStatusEnum status, Action workToDo)
 {
     Task.Factory.StartNew(() =>
     {
         WrapNetworkStatus(status, workToDo);
     });
 }
 public void SetNetworkStatus(NetworkStatusEnum flag, bool isActive)
 {
     lock (lockFlags)
     {
         if (isActive)
         {
             flagsStatus |= flag;  // Set flag
         }
         else
         {
             flagsStatus &= ~flag;  // Remove flag
         }
     }
 }
Exemple #4
0
 internal void WrapNetworkStatus(NetworkStatusEnum status, Action workToDo)
 {
     statusBlinker.SetNetworkStatus(status, true);
     RaisePropertyChangedEvent(nameof(IsWorking));
     try
     {
         workToDo();
     }
     catch (Exception ex)
     {
         Log.Error(ex, "Managed error in WrapNetworkStatus:");
     }
     finally
     {
         statusBlinker.SetNetworkStatus(status, false);
         RaisePropertyChangedEvent(nameof(IsWorking));
     }
 }
        private void UploadLogFragment(Action callbackOnError = null)
        {
            var logToSend = FileMonitor.LogContentToSend.ToString();

            UploadInfoToServer(true, logToSend, () =>
            {
                NetworkStatusEnum flags = MainWindowVM.GetFlagsNetworkStatus();
                var activeStatus        = Enum.GetValues(typeof(NetworkStatusEnum)).Cast <NetworkStatusEnum>()
                                          .Where(i => i != NetworkStatusEnum.Ready)
                                          .Where(i => flags.HasFlag(i))
                                          .ToArray();

                // Only log when the problem is not that it just is already uploading
                if (activeStatus.Length != 1 || activeStatus[0] != NetworkStatusEnum.Uploading)
                {
                    Log.Warning("FileSizeChangedNewText() Could not upload data. Status:{status} - Problems:{problems}", string.Join(",", activeStatus), MainWindowVM.ProblemsList);
                }
            });
        }
 public bool HasFlag(NetworkStatusEnum flag)
 {
     lock (lockFlags)
         return(flagsStatus.HasFlag(flag));
 }
Exemple #7
0
 void StatusBlinkerEmitStatus(object sender, NetworkStatusEnum status)
 {
     networkStatusDisplayed = status;
     RaisePropertyChangedEvent(nameof(NetworkStatusDisplayed));
     RaisePropertyChangedEvent(nameof(IsWorking));
 }