当前位置: 首页 > news >正文

北湖区网站建设服务商建设商城类网站多少钱

北湖区网站建设服务商,建设商城类网站多少钱,优化方案物理必修三电子版,用jsp实现网站开发的流程一、Dispatcher介绍 微软在WPF引入了Dispatcher#xff0c;那么这个Dispatcher的主要作用是什么呢#xff1f; 不管是WinForm应用程序还是WPF应用程序#xff0c;实际上都是一个进程#xff0c;一个进程可以包含多个线程#xff0c;其中有一个是主线程#xff0c;其余的是…一、Dispatcher介绍 微软在WPF引入了Dispatcher那么这个Dispatcher的主要作用是什么呢 不管是WinForm应用程序还是WPF应用程序实际上都是一个进程一个进程可以包含多个线程其中有一个是主线程其余的是子线程。在WPF或WinForm应用程序中主线程负责接收输入、处理事件、绘制屏幕等工作为了使主线程及时响应防止假死在开发过程中对一些耗时的操作、消耗资源比较多的操作都会去创建一个或多个子线程去完成操作比如大数据量的循环操作、后台下载。这样一来由于UI界面是主线程创建的所以子线程不能直接更新由主线程维护的UI界面。 二 、走进Dispatcher 所有 WPF 应用程序启动时都会加载两个重要的线程一个用于呈现用户界面(隐藏线程--不操作)另一个用于管理用户界面(UI线程--操作)。 呈现线程是一个在后台运行的隐藏线程 UI 线程--因此您通常面对的唯一线程 就是 UI 线程。WPF 要求将其大多数对象与 UI 线程进行关联。这称之为线程关联意味着要使用一个 WPF 对象只能由创建它的线程(主线程)调用。在其他线程上使用它会导致引发运行时异常。 UI 线程的作用是用于接收界面输入、处理事件、绘制屏幕以及运行应用程序代码。 在 WPF 中绝大部分控件都继承自 DispatcherObject甚至包括 Application。这些继承 DispatcherObject 的控件具有线程关联特征也就意味着只有创建这些对象实例且包含了 Dispatcher 的线程(通常指默认 UI 线程)才能直接对其进行更新操作。 --也就是UI线程操作WPF控件对象 DispatcherObject 类有两个主要职责 1.提供对对象所关联的当前 Dispatcher 的访问权限以及提供方法以检查 (CheckAccess) 和验证 (VerifyAccess) 某个线程是否有权访问对象派生于 DispatcherObject。CheckAccess 与 VerifyAccess 的区别在于 CheckAccess 返回一个布尔值表示当前线程是否可以使用对象而 VerifyAccess 则在线程无权访问对象的情况下引发异常。通过提供这些基本的功能所有 WPF 对象都支持对是否可在特定线程特别是 UI 线程上使用它们加以确定。如下图。 在 WPF 中DispatcherObject 只能通过与它关联的 Dispatcher 进行访问。 例如后台线程不能更新由 UI 线程创建的 Label的内容。 那么如何更新UI线程创建的对象信息呢Dispatcher提供了两个方法Invoke和BeginInvoke这两个方法还有多个不同参数的重载。其中Invoke内部还是调用了BeginInvoke一个典型的BeginInvoke参数如下 public DispatcherOperation BeginInvoke(Delegate method, DispatcherPriority priority, params object[] args); Invoke 是同步操作而 BeginInvoke 是异步操作。 该这两个操作将按指定的 DispatcherPriority 添加到 Dispatcher 的队列中。  DispatcherPriority定义了很多优先级可以分为前台优先级和后台优先级其中前台包括 Loaded~Send后台包括Background~Input。剩下的几个优先级除了Invalid和Inactive都属于空闲优先级。这个前台优先级和后台优先级的分界线是以Input来区分的这里的Input指的是键盘输入和鼠标移动、点击等等。 三 、使用Dispatcher 下面我们来用一个实例来看看如何正确从一个非 UI 线程中更新一个由UI线程创建的对象。 1、错误的更新方式 XAML代码 Window x:ClassWpfApp1.WindowThdxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleWindowThd Height300 Width400GridStackPanelLabel x:NamelblHello欢迎你光临WPF的世界!/LabelButton NamebtnThd ClickbtnThd_Click 多线程同步调用/ButtonButton NamebtnAppBeginInvoke ClickbtnAppBeginInvoke_Click BeginInvoke 异步调用/Button/StackPanel/Grid/Window 后台代码 namespace WpfApp1 {/// summary/// WindowThd.xaml 的交互逻辑/// /summarypublic partial class WindowThd : Window{public WindowThd(){InitializeComponent();}}private void ModifyUI(){// 模拟一些工作正在进行Thread.Sleep(TimeSpan.FromSeconds(2));lblHello.Content 欢迎你光临WPF的世界,Dispatcher;}private void btnThd_Click(object sender, RoutedEventArgs e){Thread thread new Thread(ModifyUI);thread.Start();}} } 错误截图 2、正确的更新方式从上例中我们看到了从子线程中直接更新UI线程创建的对象会报错。应该如何修改呢我们把上面的代码修改成如下再来看看会是什么效果。 private void ModifyUI(){// 模拟一些工作正在进行Thread.Sleep(TimeSpan.FromSeconds(2));//lblHello.Content 欢迎你光临WPF的世界,Dispatcher;this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate(){lblHello.Content 欢迎你光临WPF的世界,Dispatche 同步方法 ;}); } 当然Dispatcher类也提供了BeginInvoke方法我们也可以使用如下代码来完成对Lable的Content的更新。 private void btnAppBeginInvoke_Click(object sender, RoutedEventArgs e){new Thread(() {Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,new Action(() {Thread.Sleep(TimeSpan.FromSeconds(2));this.lblHello.Content 欢迎你光临WPF的世界,Dispatche 异步方法 DateTime.Now.ToString();}));}).Start();} 五、小结   在WPF中所有的WPF对象都派生自DispatcherObjectDispatcherObject暴露了Dispatcher属性用来取得创建对象线程对应的DispatcherDispatcherObject对象只能被创建它的线程所访问其他线程修改 DispatcherObject需要取得对应的Dispatcher调用Invoke或者BeginInvoke来投入任务。Dispatcher的一些设计思路包括 Invoke和BeginInvoke等从WinForm时代就是一直存在的只是使用了Dispatcher来封装这些线程级的操作。
http://www.hkea.cn/news/14528140/

相关文章:

  • 游戏交易网站怎么做漳平网站建设
  • wordpress acg站陕西省建设厅网站官网
  • 网站代码免费下载青岛做网站seo
  • 网站开发人员结构配比电商网站建设方案模板
  • 如何用自家电脑做网站服务器关键词优化内容
  • 怎样建立网站免费的怎么做自己的网站弄商城佣金
  • 通过社交网站来做招聘决定安阳论坛网
  • 百度搜索这个网站为什么这么差wordpress $_file
  • php网站源码模板个人营销型网站
  • 做ssp用什么建网站wordpress 自动内链 代码
  • 本地网站后台管理建设杭州外贸网站制作
  • 有实力营销型网站建设广州网站开发小程序
  • 医疗网站建设多少钱wordpress栏目指定二级域名
  • phpcms如何发布网站网站查找工具
  • 四川网站备案核验单广州安全教育平台网
  • 软件程序员长沙官网seo
  • 福州网站建设方案服务自适应网站做多大尺寸的
  • 订阅号做影视网站永州网站建设优化
  • 如何做视频网站旗下账号家装设计师怎么学
  • 非常好的资讯网站设计北京文化馆设计公司怎么看
  • 网站建设文献综述模板网页制作图片怎么添加
  • 设计企业的网站基于wordpress建小程序JWT
  • 昆明seo网站推广poi player wordpress
  • 非主营电子商务企业网站有哪些创意灵感
  • 重庆商业网站有哪些微信小程序商城官网
  • 蚌埠市做网站网站建设的总体目标是什么
  • 青岛网站建设迅优网站页面怎么做导航
  • 普通网站建设计入什么科目免费自动推广手机软件
  • 群晖网站建设处理错误500wordpress 技巧
  • 邯郸北京网站建设任丘网站开发建设怎么选