/// <summary> /// create a new object with given attributes /// </summary> /// <param name="message"></param> /// <param name="threadName"></param> /// <param name="index"></param> /// <param name="percentage"></param> /// <param name="workerThreadType"></param> public WorkStatusEventArgs(string message, string threadName, int index, decimal percentage, WorkerThreadType workerThreadType) { this.Message = message; this.ThreadName = threadName; this.Index = index; this.Percentage = percentage; this.WorkerThreadType = workerThreadType; }
/// <summary> /// Raise the workstatus event /// </summary> /// <param name="message"></param> /// <param name="threadName"></param> /// <param name="index"></param> /// <param name="percentage"></param> /// <param name="workerThreadType"></param> protected void RaiseWorkStatus(string message, string threadName, int index, decimal percentage, WorkerThreadType workerThreadType) { // make a local copy for thread-safe WorkStatusEventHandler t = workStatusEvent; if (t == null) { return; } var exlist = new AggregatedException(); foreach (WorkStatusEventHandler ev in t.GetInvocationList()) { try { lock (lockObjWork) { ev(this, new WorkStatusEventArgs(message, threadName, index, percentage, workerThreadType)); } } catch (Exception ex) { exlist.Add(ex); } } if (exlist.Count > 0) { throw exlist; } }