/// <summary> /// Asynchroner Start eines "langlaufenden" WCF- Dienstes. Das Ende des Dienstes muß explizit durch Drücken /// des Buttons "btnFertig" sichergestellt werden. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnBegin_Click(object sender, EventArgs e) { try { if (callingProxy != null && callingProxy.State != System.ServiceModel.CommunicationState.Closed) throw new Exception("Es wurde bereits ein langlaufender Dienst gestartet. Dieser muß zunächst mit \"Fertig\" beendet werden"); callingProxy = new CallingPatternsRef.CallingPatternsClient(); int delay; if (int.TryParse(tbxLongRunningOpMinExecTime.Text, out delay)) { lblResultDelaydStart.Text = DateTime.Now.ToString("T"); log.Log(mko.Log.RC.CreateStatus("Asynchrone Ausführung der Langläuferop startet [" + tbxLongRunningOpMinExecTime.Text + " ms]. Bitte \"Fertig\" anklicken!")); aresDeleayedReturn = callingProxy.BeginDelayedReturn(delay, null, null); progressBarLongRunningOp.Minimum = 0; progressBarLongRunningOp.Maximum = 100; progressBarLongRunningOp.Value = 0; CallingPatternsAnimationTimer.Start(); } } catch (Exception ex) { log.Log(mko.Log.RC.CreateError("Beim asynchronen Start eines WCF- Dienstes: " + ex.Message)); } }
/// <summary> /// Warten auf das Ende eines langlaufenden asynchron gestarteten Dienstes /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnFertig_Click(object sender, EventArgs e) { try { CallingPatternsAnimationTimer.Stop(); if (callingProxy != null && callingProxy.State != System.ServiceModel.CommunicationState.Opened) throw new Exception("Es wurde mit Begin noch kein langläufer- Dienst gestatrtet, der mit \"Fertig\" beendet werden kann"); lblResultDelaydReturn.Text = callingProxy.EndDelayedReturn(aresDeleayedReturn).ToString("T"); callingProxy.Close(); } catch (Exception ex) { log.Log(mko.Log.RC.CreateError("Beim Beenden eines asynchronen WCF- Dienstes: " + ex.Message)); } }