//event notification private void OnServiceStateEvent(ServiceStateEventArgs e) { //temporary variable for thread safety: var handler = ServiceStateChanged; //notify subscibers if not null: handler?.Invoke(this, e); }
//on service state change private static async void ServiceEvent(object sender, ServiceStateEventArgs e) { await Task.Run(() => { var sb = new StringBuilder(); sb.AppendLine("Service state changed!"); sb.AppendFormat("{0} ({1})\n", e.Service.DisplayName, e.Service.Name); sb.AppendFormat("Old state: {0}\n", e.OldState); sb.AppendFormat("New state: {0}\n", e.Service.State); sb.AppendFormat("Time: {0}", e.Moment); sb.ToString().WriteLog(EventLogEntryType.Warning, 13); }); }