// Доплнительная функция для асинхронного вызова public void GetTimeCallBack(IAsyncResult ar) { GetTimeDelegate d = (GetTimeDelegate)((AsyncResult)ar).AsyncDelegate; try { string str = d.EndInvoke(ar); this.BeginInvoke(new SetTextBoxDelegate(SetTextBox), new object[] { str }); } catch (Exception ex) { ShowError("Вызов не прошёл. Возможно, не установлен сервер.\n" + ex.Message); } }
// Асинхронный вызов private void btnCallAsynch_Click(object sender, EventArgs e) { textBoxResult.Text = ""; Application.DoEvents(); if (comboAction.SelectedIndex == 0) { AsyncCallback cb = new AsyncCallback(this.GetTimeCallBack); GetTimeDelegate d = new GetTimeDelegate(trans.GetTime); IAsyncResult ar = d.BeginInvoke(cb, null); } else { AsyncCallback cb = new AsyncCallback(this.GetTimeArrayCallBack); GetTimeArrayDelegate d = new GetTimeArrayDelegate(trans.GetTimeArray); IAsyncResult ar = d.BeginInvoke((int)numericUpDown1.Value, cb, null); } }