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(); } } } }); }
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); } }); }
/// <summary> /// Check if the given flag is active /// </summary> /// <param name="flag"></param> /// <returns></returns> public bool HasFlag(NetworkStatusEnum flag) { lock (LockFlags) return(FlagsStatus.HasFlag(flag)); }