• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > WPF委托的运用,多线程 自定义事件

WPF委托的运用,多线程 自定义事件

作者:liuer2004_82的专栏 字体:[增加 减小] 来源:互联网 时间:2017-09-13

liuer2004_82的专栏通过本文主要向大家介绍了wpf等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在几个WPF桌面应用系统开发中经常会用到委托,在这里稍微总结一下。

主要应用:

         1.线程间的访问         

         2.自定义事件

线程间的访问:

    在多线程编程中,我们经常会需要在子线程中访问主线程的内容,特别是更改主窗体的UI界面内容,如果直接访问跨线程资源,系统就会报线程访问错误.

         在WinForm中窗体类提供了Invoke方法以从子线程中访问主线程资源.

         在WPF中Window类并没有Invoke方法,但是WPF提供了专门负责线程调度工作的Window.Dispatcher类,每个线程都有一个,我们在一个线程中要让另一个线程做事情,其实就是调用目标Dispatcher调度完成.

         在WPF中使用委托访问主线程的代码如下:        

        private delegate void DelegateShowMessage(string msg);                //定义委托

        private void ShowMessageInvoke(string msg)                                      //委托访问接口

        {

            DelegateShowMessage d = ShowMessage;

            this.Dispatcher.Invoke(d);

        }

        private void ShowMessage(string msg)                                                 //要让主线程完成的事情

        {

            txtMsg.Text = msg;

        }   

     这样,在子线程中直接调用ShowMessageInvoke方法就可以了.

         上面代码中的this.Dispatcher就是主线程的线程调度员.我们在自定义一个WPF控件的时候,也可以使用这一方法. Dispatcher除了使用Invoke方法调用委托之外,还可以使用BeginInvoke方法,区别在于BeginInvoke是异步执行的.

         另外,在没有Dispatcher属性的类中也可以使用Application.Current.Dispacther,它与this.Dispatcher是一样的.

 

自定义事件:

         自定义事件代码如下:

         public delegate void OnHaveReceDataDelegate(int length);                        //定义委托

         public event OnHaveReceDataDelegate OnHaveReceData;                                          //定义事件

         触发事件:

         if (OnHaveReceData != null)

         {

                  OnHaveReceData(100);

         }

 

 

最近在用,作为留存。

http://blog.csdn.net/jiminull/article/details/7743441

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28C#使用LINQ查询表达式的基本子句总结
  • 2017-05-28C#中的委托介绍
  • 2017-05-28C#注释的一些使用方法浅谈
  • 2017-05-28choosesubject c# switch
  • 2017-05-28C#中FormClosing与FormClosed的区别详细解析
  • 2017-05-28C#中用foreach语句遍历数组及将数组作为参数的用法
  • 2017-05-28在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解
  • 2017-05-28采用C#代码动态设置文件权限
  • 2017-05-28C#实现的文件压缩和解压缩类
  • 2017-05-28C#数组的常用操作方法小结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#中this用法系列(二) 通过this修饰符为原始类型扩展方法
    • C#实现在购物车系统中生成不重复订单号的方法
    • C#无损转换Image为Icon的方法
    • C# 绘制统计图大全(柱状图, 折线图, 扇形图)
    • Json操作库DynamicJson使用指南
    • 用C#编写ActiveX控件(一)
    • C#在子线程中更新窗口部件的写法
    • C#加密算法汇总(推荐)
    • C#中is与as的区别分析
    • 解析Silverlight调用WCF/Rest异常的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有