任务没有关闭等待表格

时间:2015-12-30 11:32:52

标签: vb.net

我正在使用一些任务来执行某些操作,同时我正在向用户显示等待表格'然后当任务的功能完成时,欢迎表单从任务中关闭。我已经有了解决方案,本主题对此进行了讨论: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

1 个答案:

答案 0 :(得分:0)

以下是使用<RELEASE>代替.Show()并在长任务运行时屏蔽主窗体的答案:

  1. ShowDialog()更改为THIS_UpdateTransport

    THIS_UpdateTransportAsync
  2. 声明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
  3. 所以这适用于我和一些示例表单+控件。