У меня есть следующий код в приложении WinForm с одной кнопкой и одной меткой:
private void button1_Click(object sender, EventArgs e)
{
Task.Run(() => label1.Text = Thread.CurrentThread.ManagedThreadId.ToString());
}
Когда я запускаю программу с помощью отладчика VS, label1.Text = ...
выдаст System.InvalidOperationException из-за доступа к управлению в рабочем потоке. Это не проблема.
Но если я запускаю exe-файл напрямую, я вижу, что идентификатор рабочего потока будет отображаться на метке, а не исключение.
Чем вызвана эта разница?
обновление: если я запускаю его в VS с режимом выпуска, то нет ни исключения, ни идентификатора потока. Так что вот третий результат.