我对vb.net线程有一个非常基本的疑问。 我有一个函数MyFunc1()实际上启动一个表单并要求用户输入并返回一个字符串。只有当用户点击一个名为' return'的按钮时,才能返回。在表格中。
所以我把这个功能框起来了。
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面板也会死掉。
有任何解决方法吗?
答案 0 :(得分:3)
我认为你要做的事情不是事件需要线程。由于您无论如何都要阻止原始线程,因此实际上不需要创建第二个线程。通常你只需要打电话
MyForm.ShowDialog()
这显示了一个模态对话框,它将阻止该行的调用代码,允许显示和使用UI,直到用户解除它为止。
答案 1 :(得分:0)
如果您有.Net线程对象,可以通过调用Thread.Join来阻止。