private void TriggerError_Click(object sender, RoutedEventArgs e)
{
// 1. 挂起 Dispatcher 的消息处理
using (Dispatcher.DisableProcessing())
{
try
{
// 2. 关键:必须指定一个优先级(如 Normal 或 Background)
// 默认不带优先级的 Invoke 会被优化为直接执行(Send),不会触发 PushFrame。
// 指定优先级后,Invoke 发现不能立即执行,会尝试 PushFrame 等待,
// 此时因为处于 DisableProcessing 块中,必然抛出异常。
Dispatcher.Invoke(() =>
{
// 这段代码永远不会被执行
Debug.WriteLine("Executing...");
}, DispatcherPriority.Normal);
}
catch (InvalidOperationException ex)
{
// 你会在这里看到:暂停调度程序处理时,无法执行此操作。
MessageBox.Show($"复现成功!\n\n错误信息:{ex.Message}\n堆栈:{ex.StackTrace}");
}
}
}