因为PleaseWaitService
是由Catel 5.0.0删除的,所以我将实现的源代码从4.5.0版本复制到了单独的lib中,并链接了“ new” lib,并像以前一样使用了Service。 br />
但是由于PleaseWaitService
与我们现有的代码库结合出现了一些错误,因此我重写并简化了Service(仅支持WPF)。
现在,我在另一个线程中显示PleaseWaitWindow
,该线程在我的测试项目中可用,但在生产环境中不可用。调用InvalidOperationException
时得到一个window.Show()
(窗口是在同一线程中创建的。)
在异常的堆栈跟踪中,有来自Catel CommandManager的一些调用
at System.Windows.Threading.Dispatcher.VerifyAccess()
at Catel.MVVM.CommandManager.SubscribeToKeyboardEvents(FrameworkElement view) in C:\CI_WS\Ws\107901\Source\Catel\src\Catel.MVVM\Catel.MVVM.Shared\MVVM\Commands\CommandManager.wpf.cs:line 64
at Catel.MVVM.CommandManager.OnWindowLoaded(Object sender, RoutedEventArgs e) in C:\CI_WS\Ws\107901\Source\Catel\src\Catel.MVVM\Catel.MVVM.Shared\MVVM\Commands\CommandManager.wpf.cs:line 78
[...]
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
我已经在CommandManager中注册了一个命令,该命令不会在我的自定义PleaseWaitWindow中使用。
所以我的问题是:如何禁用从Commandmanager到窗口的标准注入?
致谢
答案 0 :(得分:1)
卡特尔(Catel)的优点是所有东西都是可插入的。如果您希望命令管理器具有不同的行为,则可以创建自己的版本并以其他方式覆盖所需的内容。不要忘记在ServiceLocator
中注册它。