2012-12-08 31 views
5

シリアルポートから送信されたコマンド(arduinoから)を監視し、他のさまざまなプログラムにキーストロークを送信するプログラムを作成しています。イベントのディスパッチャは一度だけ呼び出されますC#

イベントにディスパッチャを配置しましたが、一度だけ実行されます... 私はコードをステップ実行しており、2回目ではなく最初からすべて実行されます。

private void portReadEvent(object sender, SerialDataReceivedEventArgs args) 
     { //break here 
      Action dump = delegate() 
      { 
       dumpInfoText(serialPort.ReadExisting()); 
      }; //create my deligate 

      txt_portInfo.Dispatcher.Invoke(dump); //run dispatcher 

     } 

     private void dumpInfoText(string text) 
     { 
      string completeCommand = ""; 
      foreach (char C in text) 
      { 
       if (serDump.Length <=8 && (C != (char)0x0A || C != (char)0x0D)) //check 
       { 
        serDump = serDump + C; //add char 
       } 
       if (serDump.Length == 8) //check to see if my info has a complete command (serDump is global) 
       { 
        completeCommand = serDump; //move to complete 
        serDump = ""; // reset dump 
        if (C == (char)0x0A || C == (char)0x0D) //dont add crlf 
        { 
         serDump = serDump + C; //add char 
        } 
       } 
       if (completeCommand.Length == 8) 
       { 
        txt_portInfo.Text = txt_portInfo.Text + completeCommand; //do something with it. 
       } 
      } 
+3

ディスパッチャスレッドをご覧ください。 – lontivero

答えて

0

Ahh、Fixed ...理由はわかりません。

private void portReadEvent(object sender, SerialDataReceivedEventArgs args) 
    { 
     txt_portInfo.Dispatcher.Invoke(new Action(() => {dumpInfoText(serialPort.ReadExisting());})); //run dispatcher 

    } 
関連する問題