tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルシリアル通信からのデータ受信が走らない。
記事No11416
投稿日: 2015/05/12(Tue) 21:11
投稿者jumpten
Private Sub OnDataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)

      受信処理プログラム
End sub


formA


Private Sub TESTA
    

     While m_blnTest = False
     '無限ループになります。
     End While

End Sub

質問
1,m_blnTestの値は、シリアル通信の受信を利用して取得しますが現在、 無限ループ
になって受信処理が走らなくなります。
無限ループにならないようにしたいのですが何かいい方法は、ありませんか?
できたらdoEvents以外でお願いします。
doEventsは、動作不安定でどのような動作をするかわからないと書いてあったからです。

[ツリー表示へ]
タイトルRe: シリアル通信からのデータ受信が走らない。
記事No11418
投稿日: 2015/05/14(Thu) 13:05
投稿者shu
> Private Sub TESTA
>    
>
>      While m_blnTest = False
>      '無限ループになります。
>      End While
>
> End Sub

こういうループは駄目です。どうしてもこういう実装にしたければスレッドを分けましょう。
スレッドを分けない場合はTimerなどを使用するという方法もあります。


m_blnTestはどのようなタイミングでTrueになりどのようなタイミングでFalseになりますか?


P.S. 個人的には
m_blnTest = False
と書くのは好きではないです。
not m_blnTest
と書いた方がbooleanらしい使い方だと思います。
=を使いたいならそもそもbooleanではなくintegerなどを使えばよいと思います。

[ツリー表示へ]