|
|
1
1
我已经粘贴了您在这里显示的代码,无法复制该问题(它有一个问题,但并不是您描述的问题的根源。)不幸的是,当我尝试您发布的代码时,我可以调用ShowPleaseWait任意多次,但我没有看到异常。 肯定发生了两件事中的一件。可能,您已经修改了代码,简化了原始示例,以便在这里发布一些相当小的内容,因此,您也可能已经消除了问题(如果我不得不冒险猜测的话,那就是您的Dim window作为New window它最初是一个类成员而不是本地成员,因此每次都使用相同的window对象。这是我唯一能解释你描述的症状的方法。) 或者,我使用的代码与您不同。 为了研究最后一个问题,我将解释我是如何尝试您的代码的,这样您就可以看到是否有任何明显不同于您运行它的上下文的内容。我创建了一个新的WPF应用程序,并将您的方法粘贴到MainWindow.xaml.vb codebhind中。然后,我在窗口中添加了一个按钮,并在click处理程序中调用了您的方法:
我在返回的线程上调用Join有两个原因。首先,我想阻止主UI线程,以验证辅助窗口是否真的在一个单独的线程上运行(实际上是这样)。第二,我想验证线程是否真的在关闭—通过线程中止来关闭它是一种非常不正常的方式(正确的做法是关闭在该线程上隐式创建的调度程序,这将使对dispatcher.Run()的调用能够干净地退出。这就是我在开头提到的问题。) 为了保持我的示例与您的示例相似,我通过调用Thread.Abort关闭子窗口,尽管这不是一个好主意-我在子窗口上的按钮的单击处理程序中这样做(我突然想到,只有在从主线程调用子线程上的Abort时,问题才会出现。所以我还添加了几个按钮,让我这样做。没有变化-我仍然可以显示窗口,然后销毁线程,因为我喜欢的次数从来没有看到你所描述的错误。) 因此,要么是您使用此代码的上下文导致它失败,要么是您在此处发布的代码意外地删除了问题。不管怎样,恐怕还需要更多的信息。 |
|
|
2
1
我甚至没有在你的代码中发现任何问题。 将这些方法放在主模块中。
现在在需要显示窗口的地方调用函数,如下所示。
|
|
|
3
0
UI操作必须在UI线程上完成。这意味着,如果您想从后台线程操作UI内容,那么需要将正在执行的代码/函数封送回UI线程 之前 执行UI操作。
你的流程应该是这样的:
|
|
|
sravas · 一个Excel文件中有多个Excel工作表 8 年前 |
|
|
Nono_sad · R为每个函数调用创建一个向量 8 年前 |
|
|
johnsonambrose · 按日期QTP更改窗口名称 8 年前 |
|
|
David · 从其他视图控制器打开窗口+视图 8 年前 |