WPF:调度程序处理已暂停,但仍在处理消息
Posted
技术标签:
【中文标题】WPF:调度程序处理已暂停,但仍在处理消息【英文标题】:WPF : Dispatcher processing has been suspended, but messages are still being processed 【发布时间】:2014-06-20 14:20:14 【问题描述】:我有一个 WPF 项目,当我尝试在 RowLoad 事件上运行此代码时,出现以下错误:
private void ParentGridView_OnRowLoaded(object sender, EventArgs e)
try
if(((RadGridView)sender).Columns != null)
MessageBox.Show(((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture));
catch (Exception ex)
MessageBox.Show(ex.Message);
错误:调度程序处理已暂停,但消息仍在处理中。
注意 GridView 控件是 Telerik RadGridView
【问题讨论】:
【参考方案1】:This answer 描述的情况与您的情况相同。 (它引用了这个answer on a different website)。
在更新可视化树时,调度程序处理被暂停以避免重入问题。
如果您确实需要显示一个消息框来响应“已加载行”事件,则需要使用 `Dispatcher.BeginInvoke() 推迟调用。
所以,替换:
MessageBox.Show(((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture));
与:
var msg = ((RadGridView)sender).Columns.Count.ToString(CultureInfo.InvariantCulture);
Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(msg)));
如果此代码在 WPF 对象中,则 Dispatcher
属性可用。否则,您需要从其他地方获取它。
【讨论】:
谢谢!当我在 WPF 中使用“DragDrop”文本框控件从窗口到另一个窗口时,我遇到了这个异常。以上是关于WPF:调度程序处理已暂停,但仍在处理消息的主要内容,如果未能解决你的问题,请参考以下文章