随笔 - 750  文章 - 1  评论 - 107  阅读 - 34万

[转][C#] WPF 中 Application.DoEvents 的替代

参考:https://blog.csdn.net/qq_30725967/article/details/126379972

关于Application.DoEvents() :

此方法可以立即处理当前在消息队列中的所有 Windows 消息。 这样可以使界面不会出现假死的状况;但是WPF中没有Application.DoEvents()这个函数,可以使用以下方法替代:

复制代码
public static class DispatcherHelper
{
    [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
    public static void DoEvents()
    {
        DispatcherFrame frame = new DispatcherFrame();
        Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame);
        try { Dispatcher.PushFrame(frame); }
        catch (InvalidOperationException) { }
    }
    private static object ExitFrames(object frame)
    {
        ((DispatcherFrame)frame).Continue = false;
        return null;
    }
}
复制代码

这篇文章里的也可以,代码是一样的:https://www.cnblogs.com/JmlSaul/articles/6203364.html

 

在 ViewModel 构造函数中,使用以下代码才可以避免 Prism 错误 'The region manager does not contain the region' 错误:

System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
{
    region = regionManager.Regions["ContentRegion"];
}));

 

posted on   z5337  阅读(367)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2018-11-30 [转]Linux 基本操作(RM 删除)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示