none
SerialProtの受信ハンドラでタイマ操作不可 RRS feed

  • 質問

  •  VS2005のSerialProtコントロールを使っています。受信ハンドラでFORMタイマを開始したり停めたりしたいですが、効かないようです。

     受信ハンドラは第二スレッドだからと思い、タイマを停める関数を作りました。 その中にthis.InvokeRequiredで判定メインスレッドへInvokeコールかを決定するようにしますが、受信ハンドラからのコールでも、this.InvokeRequiredの判定でelseのルートに入ってしまいます。以下は処理のイメージです。this.InvokeRequiredの判定を外して必ずInvokeコールすればいいですが、それ以外にいい方法がないでしょうか?よろしくお願い致します。

      void SerialProt受信ハンドラ(...)

      {

       :

       StopTimer();

       }

      void StopTimer()

     {

         if(this.InvokeRequired)

         {

               //Invokeコール処理

      }

         else

         {

               //タイマ停める処理

          }

    }

    2006年8月9日 2:12