/// <summary>
 /// データ受信イベントの処理を行います。
 /// </summary>
 /// <param name="sender">イベントを送信したオブジェクトを指定します。</param>
 /// <param name="e">受信データを含むイベント引数を指定します。</param>
 private void CommunicatorDataReceived(object sender, DataReceivedEventArgs e)
 {
     var d = this.Dispatcher;
     if (!d.CheckAccess())
     {
         d.Invoke(()=> this.CommunicatorDataReceived(sender, e));
     }
     else
     {
         var communicator = sender as TcpCommunicator;
         if (communicator != null)
         {
             try
             {
                 var data = Encoding.UTF8.GetString(e.ReceivedData);
                 this.AddLog("クライアント" + (int)communicator.Tag + ":" + data);
                 communicator.Send(e.ReceivedData);
             }
             catch (Exception ex)
             {
                 var msg = "受信データの変換に失敗しました。(" + ex.GetType().ToString() + ":" + ex.Message + ")";
                 this.AddLog(msg, LogRecord.WarningLevel.Error, ex.StackTrace);
             }
         }
     }
 }
 /// <summary>
 /// データ受信イベントを発生させます。このメソッドは派生クラスでオーバーライドできます。
 /// </summary>
 /// <param name="e">受信データを含むイベント引数を指定します。</param>
 protected virtual void OnDataReceived(DataReceivedEventArgs e)
 {
     if (this.DataReceived != null)
     {
         this.DataReceived(this, e);
     }
 }
 /// <summary>
 /// データ受信イベントの処理を行います。
 /// </summary>
 /// <param name="sender">イベントを送信したオブジェクトを指定します。</param>
 /// <param name="e">受信データを含むイベント引数を指定します。</param>
 private void TcpCommunicatorDataReceived(object sender, DataReceivedEventArgs e)
 {
     var d = this.Dispatcher;
     if (!d.CheckAccess())
     {
         d.Invoke(() => this.TcpCommunicatorDataReceived(sender, e));
     }
     else
     {
         try
         {
             var data = this.encoding.GetString(e.ReceivedData);
             this.AddLog("受信データ:" + data);
         }
         catch (Exception ex)
         {
             var msg = "受信データの変換に失敗しました。(" + ex.GetType().ToString() + ":" + ex.Message + ")";
             this.AddLog(msg, LogRecord.WarningLevel.Error, ex.StackTrace);
         }
     }
 }