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

东莞企业网站电话网站实现中英文

东莞企业网站电话,网站实现中英文,不相关的网站做单项链接可以吗,品牌网站建设S苏州WPF支持单线程单元模型#xff0c;该模型与在Windows窗体应用程序中使用的模型非常类似#xff0c;具有以下几条原则#xff1a; WPF元素具有线程关联性。创建WPF元素的线程拥有所创建的元素#xff0c;其他线程不能直接与这些WPF元素进行交互。WPF对象都在类层次的某个位…WPF支持单线程单元模型该模型与在Windows窗体应用程序中使用的模型非常类似具有以下几条原则 WPF元素具有线程关联性。创建WPF元素的线程拥有所创建的元素其他线程不能直接与这些WPF元素进行交互。WPF对象都在类层次的某个位置继承自DispatcherObject类DispatcherObject类提供了少量成员用于核实访问WPF对象的代码是否在正确的线程上执行如果没有是否能切换位置。 Dispatcher类 Disparcher类的实例为一个调度程序管理在WPF应用程序中发生的操作。调度程序拥有应用程序线程也就是拥有线程中创建的WPF元素并管理工作项队列当应用程序运行时调度程序接受新的工作请求并且一次执行一个任务。 在WPF中有一个基类DisparcherObject所有WPF组件如Window、Button等都继承自DispatcherObject当某个线程中第一次实例化DisparcherObject的子类时会创建一个调度程序。因此如果开多个线程每个线程都展示独立的窗体那么将会创建多个调度程序。但在一般情况下开发应用程序只使用一个用户界面线程和一个调度程序。 注意区分Dispatcher与DispatcherObject并不是父子类。 DispatcherObject类 一、常用成员 Dispatcher属性成员返回管理该对象的调度程序。 CheckAccess()如果代码在正确的线程上使用对象就返回true否则返回false。 VerifyAccess()如果代码在正确的线程上使用对象就什么也不做否则抛出InvalidOperationException异常。 一般情况下我们不需要自己去调用VerifyAccess()方法WPF对象为保护自身会频繁调用VerifyAccess()方法从而不可能在错误的线程中长时间使用一个对象。 在需要跨线程访问控件时可以通过控件的调度程序即Dispatcher对象的Invoke()或BeginInvoke()方法来将代码安排为调度程序的任务然后控件的调度程序会去执行这些代码。 BeginInvoke(DispatcherPriority priority, Delegate method)第一个参数指示任务的优先级为DispatcherPriority枚举类型一般情况下使用DispatcherPriority.Normal即可如果任务不需要被立即完成也可以使用更低的优先级第二个参数为一个方法的委托Delegate类型该委托指向具体任务的方法。 DispatcherPriority.ApplicationIdle等待应用程序在完成所有其他工作时执行指定的任务。DispatcherPriority.SystemIdle比ApplicationIdle优先级更低直到整个系统都处于休息状态并且CPU处于空闲状态才执行。 private void Button_Click(object sender, RoutedEventArgs e) {Task.Run(() {Change();}); }private void Change() {if (!CheckAccess()){Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() {lbl_Test.Content Test-ChangeOne;})); ;}else{lbl_Test.Content Test-ChangeTwo;} }Invoke()Invoke()函数的参数是一个Action或Func类型对象与BeginInvoke的区别是BeginInvoke是异步执行的Invoke同步执行的使用Invoke时如果执行任务比较耗时会导致UI界面卡死。 private void Button_Click(object sender, RoutedEventArgs e) {Task.Run(() {Change();}); }private void Change() {if (!CheckAccess()){Dispatcher.Invoke(DispatcherPriority.Normal, new Action(({Thread.Sleep(5000);//这里做延时会发现UI界面卡住lbl_Test.Content Test-ChangeOne;})); }else{lbl_Test.Content Test-ChangeTwo;} }二、Dispacher调度器对象的获取 常见的获取Dispacher调度器的方式有如下三种 直接调用Dispatcher属性 由于WPF中的绝大多是类型都是DispatcherObject的子类因此继承了Dispatcher属性可以直接在类中通过Dispatcher来获取。视图的后台代码继承了Window或UserControl等都是DispatcherObject的子类 public partial class MainWindow : Window {public MainWindow(){InitializeComponent();Dispatcher.BeginInvoke(() {});} }通过Dispatcher的静态属性 通过System.Windows.Threading命名空间下的Dispatcher属性可以获得当先线程的调度程序对象。 注意这里是获取当前线程的调度器对象并不一定能获得UI的调度器对象。 var dispatcher System.Windows.Threading.Dispatcher.CurrentDispatcher;通过Application获取 如果是在应用程序中如WPF可以通过Application.Current.Dispatcher来获取当前UI线程的调度程序对象。 这里可以直接获取到当前应用的UI调度器对象 var dispatcher Application.Current.Dispatcher;DispatcherTimer 在WPF中常常会遇到按照一定间隔时间执行同一个任务的场景这个时候就可以使用定时器DispatcherTimer来进行定时任务的设定了。 DispatcherTimer执行任务的线程是在UI调度器所在线程上所以可以在执行任务中直接访问和操作UI元素而不会引发线程安全问题。 常用的两种创建方式 //第一种 private DispatcherTimer? _timer; private void MyTask(){ ... } public MainWindowViewModel() {_timer new DispatcherTimer(TimeSpan.FromSeconds(1), DispatcherPriority.Loaded, new EventHandler((s, e) MyTask()), Application.Current.Dispatcher); }//第二种 private DispatcherTimer _timer new DispatcherTimer(); private void MyTask(object? sender, EventArgs e) { ... } public MainWindowViewModel() {_timer.Interval TimeSpan.FromSeconds(1);_timer.Tick MyTask; }计时器的开始与停止 _timer?.Start(); _timer?.Stop();
http://www.zqtcl.cn/news/815596/

相关文章:

  • 哪个网站专做民宿wordpress 主题教程
  • 网站后台 设计北京海淀区官网
  • 公司官网网站建设想法wordpress oss
  • 如何自己创建网站招聘网站代理
  • 手机网页视频提取工具seo网站是什么
  • seo网站优化公司龙岩网站设计一般要多久
  • 江苏自助建站系统哪家好go语言网站开发
  • 建设网站 注册与登陆wordpress产品上传
  • 河北省住房与建设厅网站陶瓷刀具网站策划书
  • 大型商城网站建设方案程序外包
  • 邵阳网站建设制作电子商务网站开发软件
  • 怎样推广网站平台树莓派 wordpress mysql
  • 互联网公司网站建设wordpress发文章设置文字大小
  • 国科联创网站建设无锡网站建设有限公司
  • 网站开发官网源码石家庄怎样做网站
  • 做网站的开发工具北京公司网站制作电话
  • 试用体验网站3g微网站是什么
  • 响应式网站源代码什么是营销渠道
  • 深圳品牌做网站公司有哪些php的网站数据库如何上传
  • 关于医疗保障局门户网站建设青柠直播免费版
  • 微信网站制作免费平台微商城网站建设公司的价格
  • 古典风格网站模版广州网站建设加q.479185700
  • 建站工具推荐网站关键词在哪里添加
  • 国内简约网站汽车最好网站建设
  • 外文网站建设网站项目计划书模板范文
  • 免费婚庆网站模板深圳市龙华区繁华吗
  • 档案馆建设网站邢台又一地被划定高风险区域
  • 网站怎么赚钱的网站asp源码
  • 明星网站怎么设计新手怎么做网络销售
  • ps做网站72分辨率深鑫辉网站建设