gpt4 book ai didi

c# - 禁用 'CheckForIllegalCrossThreadCalls' 是阻止跨线程错误的好方法吗?

转载 作者:行者123 更新时间:2023-11-30 19:11:53 25 4
gpt4 key购买 nike

我的 C# 应用程序中运行着许多线程,每个线程都访问 TextBox 以记录其事件。当我设置 CheckForIllegalCrossThreadCalls属性设置为 false,我能够阻止许多跨线程错误:

System.InvalidOperationException: Cross-thread operation not valid: Control 'myTextBox'
accessed from a thread other than the thread it was created on.

这个问题的最佳解决方案是什么?使用委托(delegate)或禁用 CheckForIllegalCrossThreadCalls 我试过了吗?许多文章说禁用 CheckForIllegalCrossThreadCalls 不是一个好的编程习惯。

最佳答案

禁用 CheckForIllegalCrossThreadCalls 就像提示你在撞车时被安全气囊撞到:正确的解决方案不是移除安全气囊,而是为了避免撞车。

您根本不应该从错误的线程进行 UI 更新。大多数情况下,您可能都逃脱了它(禁用了检查),但这并不意味着这是一个好主意 - 它让您容易出现细微的错误,这些错误只会偶尔出现并且是真的很难追踪。

是的,使用 Control.InvokeDispatcher.InvokeBackgroundWorker 等编码到正确的线程以进行 UI 访问。这就是存在这些调用/类型的原因。

关于c# - 禁用 'CheckForIllegalCrossThreadCalls' 是阻止跨线程错误的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com