private void uxReqSend_Click(object sender, EventArgs e)
        {
            try
            {
                uxReqList.Items.Clear();

                Delivery delivery = new Delivery(uxReqMsg.Text);

                int numToSend = Convert.ToInt32(uxReqNumSend.Value);
                for (int i = 0; i < numToSend; i++)
                {
                    IAsyncResult result = m_doRequest.BeginInvoke(uxReqTermName.Text, delivery, null, null);
                    result.AsyncWaitHandle.WaitOne();

                    if (!result.IsCompleted)
                    {
                        throw new Exception("The event wait failed?");
                    }

                    DetailedDelivery response = null;
                    if (m_response is Exception)
                    {
                        throw (Exception)m_response;
                    }
                    else
                    {
                        response = (DetailedDelivery)m_response;
                    }

                    if (uxReqList.Items.Count >= Convert.ToInt32(uxReqMaxShow.Value))
                    {
                        uxReqList.Items.RemoveAt(0);
                    }

                    uxReqList.Items.Add(new ListViewItem(new string[] {
                        DateTime.Now.ToShortTimeString(),
                        response.Message().Length.ToString(),
                        response.SourceApplication(),
                        response.SourceHost(),
                        uxRespShowMsg.Checked ? response.MessageString() : "",
                    }));

                    uxReqNumSent.Text = String.Format("Req/Resp {0} of {1}", (i + 1), numToSend);
                }

                uxStatusText.Text = "Request/Response(s) completed.";
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to request: " + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }