我正在将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,那么它运行得很好。
有什么建议吗?