C# 实现窗体不阻塞的等待

C# 实现窗体不阻塞的等待

一、Show与ShowDialog

众所周知在c#中有两种显示窗口的方式:模态显示(showdialog)与非模态显示(show),模态显示会阻塞调用窗口的所有消息响应,在调用ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码 ,期间用户是无法对该窗口外的界面进行ui交互的;非模态显示则不会,可以在弹出窗口和调用窗口之间随意切换。调用窗口调用show方法后,下面的代码可以立即执行。

二、实现不阻塞的等待

那么如果我们想实现一个新的窗口显示方法,既可以像模态显示那样,在关闭对话框的时候才执行显示方法后的代码,又可以像非模态显示那样不阻塞消息响应,不影响用户的UI操作。这里我们就要用到一个方法Dispatcher.PushFrame
想深入了解的可以参考这篇文章:https://www.h3399.cn/201709/148010.html
这里只讲如何使用
代码如下(窗口显示):

 Window.Show();
 _dispatcherFrame = new DispatcherFrame();
 Dispatcher.PushFrame(_dispatcherFrame);

代码如下(窗口关闭):

 _dispatcherFrame.Continue = false;
 _dispatcherFrame = null;

这样我们就可以实现非阻塞等待显示

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值