在VB.net中线程化

时间:2012-12-05 17:14:30

标签: vb.net multithreading

我对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面板也会死掉。

有任何解决方法吗?

2 个答案:

答案 0 :(得分:3)

我认为你要做的事情不是事件需要线程。由于您无论如何都要阻止原始线程,因此实际上不需要创建第二个线程。通常你只需要打电话

MyForm.ShowDialog()

这显示了一个模态对话框,它将阻止该行的调用代码,允许显示和使用UI,直到用户解除它为止。

答案 1 :(得分:0)

如果您有.Net线程对象,可以通过调用Thread.Join来阻止。