.net 将CheckForIllegalCrossThreadCalls设置为false以避免调试过程中出现跨线程错误是否安全?

.net 将CheckForIllegalCrossThreadCalls设置为false以避免调试过程中出现跨线程错误是否安全?,.net,multithreading,winforms,.net,Multithreading,Winforms,在WinForms应用程序中,设置为FALSE以避免调试期间出现跨线程错误是否安全 CheckForIllegalCrossThreadCalls = false; 不,那不安全。检查线程错误的Winforms代码非常重要,导致的故障极难诊断。最大的问题是,它不会导致一致的失败,你的应用程序会随机出现错误,每个月只会死锁或崩溃一次。或者永远不要,直到你做了一个小小的改变。或者只在特定用户的机器上,您会责怪用户而不是您的代码 CheckForIllegalCrossThreadCalls属性首先

在WinForms应用程序中,设置为FALSE以避免调试期间出现跨线程错误是否安全

CheckForIllegalCrossThreadCalls = false;

不,那不安全。检查线程错误的Winforms代码非常重要,导致的故障极难诊断。最大的问题是,它不会导致一致的失败,你的应用程序会随机出现错误,每个月只会死锁或崩溃一次。或者永远不要,直到你做了一个小小的改变。或者只在特定用户的机器上,您会责怪用户而不是您的代码


CheckForIllegalCrossThreadCalls属性首先存在的唯一原因是为了使.NET 2.0及更高版本与未执行此线程安全测试的有缺陷的.NET 1.x程序保持兼容。缺陷的向后兼容性-P

你可能认为你可以侥幸逃脱,但只要咬紧牙关,修复该死的代码即可D我只是想知道不修复代码的后果你不是在避免线程错误,只是在检测它们。@orange注意,C#标记并不合适,因为问题是关于.NET与Winforms的关系,而不是具体的C#。语法并不重要,VB.NET和C#(都是.NET)之间的唯一区别是分号。由于这一问题适用于两种语言,并且您保留了C#标记,您还可以添加VB.NET标记……Hans似乎认为将此属性显式设置为true是一个好主意,否则它只会在本地测试时爆炸(因为它最初分配了
Debugger.IsAttached
)它是okayish,但是您的发布版本应该尽可能快地运行。