2
我剛剛在我們的代碼庫中找到了一個表單中的這個gem。我想我已經知道了這個答案:我很確定在後臺線程中調用MessageBox.Show是一個可怕的想法,但是有人可以爲我確認並澄清嗎?調用MessageBox.Show從任務
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (_FileScanner.IsSending)
{
Trace("Cannot close form because: Transferring files.");
e.Cancel = true;
Task<DialogResult> t = Task.Factory.StartNew(() => MessageBox.Show("Transferring files"));
return;
}
}
是的,據我所知你應該只從UI線程調用UI,否則你可以從異常中獲得任何意想不到的結果:)我不知道這段代碼片段背後的原因是什麼......;) –
我是不完全確定,但是TaskScheduler實際上可以調度任務以使用UI同步上下文,並且代碼可以在UI線程上執行。 – jags