0

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

有什么办法可以解决这个问题?

4

2 回答 2

3

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

MyForm.ShowDialog()

这将显示一个模态对话框,并将阻止该行的调用代码,从而允许显示和使用 UI,直到用户将其关闭。

于 2012-12-05T17:27:05.583 回答
0

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

于 2012-12-05T19:38:13.303 回答