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); } }