Example #1
0
 /// <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;
            }
        }