Извините, я понятия не имею, как назвать этот вопрос.MessageBox.Показать и отложить/отложить обновление
Я написал объяснение этой ошибки примерно в 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());
}
I (F11 в Visual Studio), и когда он попадает в строку disOp.Status.ToString()
, следующий F11 переходит на следующую строку, как ожидалось.
Однако, когда я добираюсь до строки MessageBox.Show(disOp.Status.ToString());
и нажимаю F11, он переходит к моему делегату DispatcherOperation.
Мой вопрос: почему это происходит, когда я использую элемент управления Messagebox, но не строку !?
(Это на самом деле EXACT поведение я требую, но я не хочу MessageBox появляться, так как пользователь должен нажать OK/Отмена ... Как еще я могу повторить это?)
Спасибо вы
Dave
Вы правы. Вы не объяснили это хорошо. :-) Если вы не хотите, чтобы ящик сообщений отображался, просто не вызывайте 'MessageBox.Show()'. Что касается того, почему они ведут себя по-другому: компилятор, вероятно, оптимизирует оператор присваивания 'string x', поскольку он выходит за рамки без использования. 'MessageBox.Show()' не делает, потому что он действительно что-то делает. –