例外:调用线程无法访问此对象,因为另一个线程拥有它

时间:2015-09-09 16:55:15

标签: wpf vb.net dispatcher

我正在将UI从Windows窗体转换为WPF。我得到以下异常“当我尝试在我创建的这个新WPF窗口上调用任何东西时,调用线程无法访问此对象,因为其他线程拥有它”。

我引用了堆栈溢出和许多网站,发现我应该使用Dispatcher.CheckAccess()或类似于调度程序和检查访问的东西。我尝试了很多这样的事情

这是我用过的东西之一

Private Delegate Sub ShowSkinInvoked()

If (Dispatcher.CheckAccess()) Then
    Me.Show()
Else
    Dim d As ShowSkinInvoked = New ShowSkinInvoked(AddressOf ShowSkin)
    Dispatcher.Invoke(d)
End If

这已经删除了异常,虽然调试错误已经消失,但它冻结了应用程序,除了终止它之外我什么也做不了。它甚至没有在“Me.Show”之后显示窗口。

此外,如果我编译程序然后通过指定exe的路径使调用模块使用此编译的exe然后由于某种原因它完美。

如果这听起来令人困惑那么我的意思是,我有多种形式。如果我调用模块A中的代码来加载并显示模块B,那么它会给我异常,但如果我调用模块A中的代码来运行模块B的编译exe,那么它运行得很好。

有什么建议吗?

0 个答案:

没有答案