0

对不起,我不知道如何命名这个问题。

我已经为这个错误写了大约 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 控件而不是字符串时会发生这种情况!?

(这实际上是我需要的确切行为,但我不希望出现消息框,因为用户必须单击确定/取消......我还能如何复制这个?)

谢谢

戴夫

4

1 回答 1

1

BeginInvoke 不会真正运行您的操作,直到当前线程可以自由处理挂起的消息,并且 MessageBox 必须抽水以允许处理消息(有点像 DoEvents)。

于 2012-06-14T01:41:57.990 回答