2017-06-28 14 views
1

スマートデバイス(WindowsCE)上で実行される既存のVBコードがあります。私は、プリプロセッサ命令に基づいてCEの代わりにウィンドウ用にコンパイルする "シミュレーションモード"を持つようにコードを編集しました。シミュレートされたデバイスを実行しているユーザーがログファイルを読み取らずに何が起きているのかを理解できるようにするために、UIを追加しようとしています。現在、UIの更新に使用されているコードは実行されていますが、変更は表示されません。 SimulatorGUIクラスでGUIを更新するコードが実行されますが、GUIは更新されません

Public Module SomeDevice 

#If __SIMULATE__ Then 
    Private WithEvents _derp As New SimulatorGUI() 
    Private _guiShown As Boolean = False 
    Private _guiLoading As Boolean = False 

    Private Sub handleShown(sender As Object, e As EventArgs) Handles _derp.Shown 
     _guiShown = True 
    End Sub 

    Private Sub handleLoading(sender As Object, e As EventArgs) Handles _derp.Load 
     _guiLoading = True 
    End Sub 

#End If 

    Public Sub Main() 
    #If __SIMULATE__ Then 
     Dim GUIThread As Threading.Thread = New Threading.Thread(Sub() _derp.ShowDialog()) 
     'I have also tried System.Windows.Forms.Application.Run(_derp)) 

     GUIThread.Name = "Simulator GUI" 
     GUIThread.Start() 

     While Not _guiLoaded OrElse Not _guiShown 
      Thread.Sleep(0) 
     End While 

     SimulatorGUI.PutOnGUI("Loaded and shown") 

#End If 
'normal device functionality 
    End Sub 
End Module 

を::

Public Class SimulatorGUI 
    Public Sub PutOnGUI(ByVal message As String) 
     If Me.InvokeRequired Then 
      Me.Invoke(Sub() PutOnGUI(message)) 
     Else 
      ListBox1.Items.Add(message) 
      Debug.WriteLine("DOING STUFF: " + message) 
      'ListBox1.Invalidate() 
      ListBox1.Update() 
     End If 
    End Sub 
End Class 

私はこのコードを実行する場合は、デバッグプリントが現れ、リストボックス内部コレクションがあることを示す。ここ

は、私がこれまで試みられてきたものですそれには期待されるテキストが含まれていますが、テキストはGUIに表示されません。また、 "InvokeRequired"チェックの結果、Me.Invokeが呼び出されることはありません。それが重要であれば、残りのデバイスコードは完全に期待どおりに実行されます。ここで何がうまくいかないのですか?

+0

FYI 'Application.Run()は'それはまた、UIメッセージループを作成するので、最初の形式を示すの正しい方法です。 –

答えて

1

作成したインスタンスからコードを呼び出していません。

これにコードを変更してみてください:

'SimulatorGUI.PutOnGUI("Loaded and shown") 
_derp.PutOnGUI("Loaded and shown") 
+0

ありがとう、これは今、あまりにも明白なようだhah * rolls eyes * – Cobalt

関連する問題