在 DEBUG 模式下出现 TPL 问题,在 Release 模式下一切正常

TPL issue when DEBUG mode, in Release mode all is okay

为什么我得到一个异常:{ InvalidOperationException:跨线程操作无效:控制 'lblText' 从创建它的线程以外的线程访问 } :当 运行 应用程序处于调试模式时?:

namespace testFormApp
{
    public partial class Form1 : Form
    {
        public Form1() => InitializeComponent();

        private void Form1_Load(object sender, EventArgs e)
        {
            lblText.Click += (send, arg) => Need = false;
        }

        bool Need = true;

        private async void ButtonStart_Click(object sender, EventArgs e)
        {
            await Task.Run(async() =>
            {
                lblText.Text = "";
                while(Need)
                {
                    lblText.Text += ". ";
                    await Task.Delay(1000);
                }
            });
        }
    }
}

但相同的代码在发布模式下工作没有问题。为什么我会出错?

查看 Hans Passant 对这个问题的回答,Why is cross thread operation exception not thrown while running exe in bin\Debug 他说跨线程错误检查仅在附加调试器时启用,您也可以手动禁用跨线程错误检查

Control.CheckForIllegalCrossThreadCalls = false;