protected void updateStatus(MessageArgs e)
 {
     if (StatusUpdate != null)
     {
         StatusUpdate(this, e);
     }
 }
        /// <summary>
        /// Updates statusMsgs listbox with status from child threads
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnStatusUpdate(object sender, MessageArgs e)
        {
            //cross thread - so you don't get the cross theading exception
            if (this.InvokeRequired)
            {
                this.BeginInvoke((MethodInvoker)delegate
                {
                    OnStatusUpdate(sender, e);
                });
                return;
            }

            //update status
            statusMsgs.Items.Add(e.msg);
        }