0

私はvb.netスレッドに非常に基本的な疑問を持っています。私は実際にフォームを起動し、ユーザーからの入力を求めて文字列を返す関数MyFunc1()を持っています。返品は、ユーザーがフォームの「返品」というボタンをクリックした場合にのみ行う必要があります。

そこで、このような関数を組み立てました。

Public done as Boolean = true
Public str as String

Function MyFunc1() As String
  Start Thread1  //launch UI as seperate thread
  While done
  End While    //Infinite loop to hold the parent loop till done is made as false
  return str
End Function

Function Thread1
  //code to launch UI
End Function

Function onClickReturn  //Function triggered when 'return' is pressed
  str = EditText.text
  done = false
End Function

現在の問題は、Thread1がUIを起動することですが、UIが起動されると、Thread1が停止し、UIパネルも停止します。

これを修正する方法はありますか?

4

2 に答える 2

3

私はあなたがやろうとしていることはイベントにスレッドを必要としないと思います。とにかく元のスレッドをブロックしているので、実際には2番目のスレッドを作成する必要はありません。通常、あなたはただ電話します

MyForm.ShowDialog()

これはモーダルダイアログを示し、その行で呼び出し元のコードをブロックし、ユーザーがUIを閉じるまでUIを表示して使用できるようにします。

于 2012-12-05T17:27:05.583 に答える
0

.Netスレッドオブジェクトがある場合は、Thread.Joinを呼び出してブロックできます。

于 2012-12-05T19:38:13.303 に答える