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();
                        }
                    }
                }
            });
        }
        /// <summary>
        /// Default constructor
        /// </summary>
        public StatusBlinker()
        {
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    // Wait between each check of the loop
                    Task.Delay(1000).Wait();

                    NetworkStatusEnum[] flags;

                    // Lock for flag access
                    lock (LockFlags)
                    {
                        // Enumerate the flags
                        flags = Enum.GetValues(typeof(NetworkStatusEnum)).Cast <NetworkStatusEnum>()
                                .Where(i => FlagsStatus.HasFlag(i))
                                .ToArray();
                    }

                    // Loop through the active flags
                    for (var i = 0; i < flags.Length; i++)
                    {
                        // Emit the status flag
                        EmitStatus?.Invoke(flags[i]);

                        // Wait between each emission except the last
                        if (i != flags.Length - 1)
                        {
                            Task.Delay(1000).Wait();
                        }
                    }
                }
            });
        }
Example #3
0
 public EmitResult(EmitStatus status, IEnumerable <Diagnostic> diagnostics)
 {
     this.Status      = status;
     this.Diagnostics = diagnostics.ToImmutableArray();
 }