我正在使用一些任务来执行某些操作,同时我正在向用户显示等待表格'然后当任务的功能完成时,欢迎表单从任务中关闭。我已经有了解决方案,本主题对此进行了讨论:enter link description here
现在问题是我想在其他地方实施它,我面临的问题是我的等待表格仍然存在(没有关闭),我不明白为什么。我能说的是我检查了功能是否正在恢复价值 - 这是肯定的。我想这是因为函数在欢迎表单显示之前完成因此它堆栈...反正是否有检查是否是这种情况?那是代码:
Dim pic As New Waiting
Dim tsk As Task(Of Boolean) = Task.Factory.StartNew(Function()
'--Run lenghty task
'--Show the form
pic.ShowDialog()
Dim retValue As Boolean = THIS_UpdateTransport()
'--Close form once done (on GUI thread)
pic.Invoke(New Action(Sub() pic.Close()))
Return retValue
End Function)
'--Show the form
pic.ShowDialog()
Task.WaitAll(tsk
)
答案 0 :(得分:0)
以下是使用<RELEASE>
代替.Show()
并在长任务运行时屏蔽主窗体的答案:
将ShowDialog()
更改为THIS_UpdateTransport
THIS_UpdateTransportAsync
声明UI方法调用任务为 Private Function THIS_UpdateTransportAsync() As Task(Of Boolean)
'Do some really important work
Return Task.Factory.StartNew(Function()
Threading.Thread.Sleep(5000)
Return True
End Function)
End Function
(在我的示例中单击按钮):
async
所以这适用于我和一些示例表单+控件。