對不起,我不知道如何標題這個問題。MessageBox.Show和延期/延遲更新
我寫了一個解釋這個錯誤約10次,然後將其刪除,因爲它是不明確的 - 原諒我,我跳下直入代碼,然後將解釋
public MainWindow()
{
InitializeComponent();
stuff();
}
private void stuff()
{
DispatcherOperation disOp = Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(delegate
{
//PrintDialog dialog = new PrintDialog();
//dialog.PrintVisual(canvas1, "");
}));
string x = disOp.Status.ToString();
MessageBox.Show(disOp.Status.ToString());
}
我已經逐步通過這個代碼(Visual Studio中的F11),並且當它碰到行 disOp.Status.ToString()
時,下一個F11跳轉到預期的下一行。
但是,當我到達行MessageBox.Show(disOp.Status.ToString());
並按F11時,它跳轉到我的DispatcherOperation委託。
我的問題是爲什麼當我使用Messagebox控件而不是字符串時發生這種情況!?
(這實際上是確切的行爲我需要,但我不想一個消息框出現,因爲用戶必須點擊確定/取消......還能如何我複製這個?)
謝謝你
戴夫
你說得對。你沒有解釋得很好。 :-)如果你不想要一個消息框出現,就不要調用MessageBox.Show()。至於爲什麼它們的行爲不同:編譯器可能會優化'string x'賦值語句,因爲它在未被使用的情況下超出了範圍。 'MessageBox.Show()'不會,因爲它實際上做了一些事情。 –