3

コードベースのフォームでこの宝石を見つけました。私はすでにこれに対する答えを知っていると思います:バックグラウンドスレッドで 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;
    }
}
4

1 に答える 1

2

これを行うことにはほとんど意味がないように思われ、実際には潜在的な危険性があります.タスクを使用して非UIブロックスレッドで重い作業が実際に処理されていることを考えると(そうあるべきです)、あなたが望むまさにその時入力をブロックするためのフォーム (要件によって異なりますが、これはダイアログのモダリティに関係なく有効です) は、STAThread でこれを行うときの確認までです。

于 2012-10-08T10:31:40.957 に答える