当前位置:  开发笔记 > 编程语言 > 正文

WPF相当于Windows窗体中的"Control.CheckForIllegalCrossThreadCalls"

如何解决《WPF相当于Windows窗体中的"Control.CheckForIllegalCrossThreadCalls"》经验,为你挑选了1个好方法。

我想在我的WPF应用程序中禁用跨线程异常.在Windows窗体应用程序中,我会这样做:

Control.CheckForIllegalCrossThreadCalls = False

如何在WPF应用程序中执行相同操作?



1> JaredPar..:

在WPF中,通过CheckAccess()成员检查非法跨线程调用的责任在于Dispatcher对象.像DependencyObject这样的对象使用它们关联的Dispatcher来检查几乎所有API调用上的非法线程访问.

与WinForms不同,无法在WPF中禁用此检查.默认情况下处于启用状态,无法禁用.

至于为什么会出现这种情况(这里有一点推测).CheckForIllegalCrossThreadCalls成员已添加到.net 2.0中.原因是从不同的线程访问控件已经是非法的,没有执行此操作.这导致了许多不可预测的用户场景,而不是主动崩溃,控件将具有不可预测的behvaior.

在2.0中,WinForms团队添加了CheckForIllegalCrossThreadCalls作为主动防止这些场景发生的方式.但是因为有些人正在逃避它,他们必须插入一种方法来关闭它,以便应用程序向后兼容.

如果您需要将其关闭,则代码中存在错误.通过查找和修复错误而不是禁用检查,您可以获得更好的服务.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有