/// <summary> /// 例外通知イベントの処理を行います。 /// </summary> /// <param name="sender">イベントを送信したオブジェクトを指定します。</param> /// <param name="e">発生した例外を含むイベント引数を指定します。</param> private void CommunicatorExceptionHappened(object sender, ExceptionHappenedEventArgs e) { var d = this.Dispatcher; if (!d.CheckAccess()) { d.Invoke(() => this.CommunicatorExceptionHappened(sender, e)); } else { var communicator = sender as TcpCommunicator; if (communicator != null) { var ex = e.Exception; var msg = ex.GetType().ToString() + ":" + ex.Message; this.AddLog(msg, LogRecord.WarningLevel.Error, ex.StackTrace); if (!communicator.IsConnected) { communicator.Dispose(); } } } }
/// <summary> /// 例外発生イベントを発生させます。このメソッドは派生クラスでオーバーライドできます。 /// </summary> /// <param name="e">発生した例外を含むイベント引数を指定します。</param> protected virtual void OnExceptionHappened(ExceptionHappenedEventArgs e) { if (this.ExceptionHappened != null) { this.ExceptionHappened(this, e); } }
/// <summary> /// 例外通知イベントの処理を行います。 /// </summary> /// <param name="sender">イベントを送信したオブジェクトを指定します。</param> /// <param name="e">発生した例外を含むイベント引数を指定します。</param> private void AcceptorExceptionHappened(object sender, ExceptionHappenedEventArgs e) { var d = this.Dispatcher; if (!d.CheckAccess()) { d.Invoke(() => this.AcceptorExceptionHappened(sender, e)); } else { var ex = e.Exception; var msg = ex.GetType().ToString() + ":" + ex.Message; this.AddLog(msg, LogRecord.WarningLevel.Error, ex.StackTrace); } }