C#基于委托实现多线程之间操作的方法
本文实例讲述了C#基于委托实现多线程之间操作的方法。分享给大家供大家参考,具体如下:
有的时候我们要起多个线程,更多的时候可能会有某个线程会去操作其他线程里的属性。
但是线程是并发的,一般的调用是无法实现我们的要求的。
于是,我们在这里就可以用委托,代码如下
private delegate void DelegateInfo(); private delegate void DelegateIsEnd(); //这个是线程调用其他线程的方法 private void Dowork() { // 判断是否需要Invoke,多线程时需要 if (this.InvokeRequired) { // 通过委托调用写主线程控件的程序,传递参数放在object数组中 this.Invoke(new DelegateInfo(LoadFile)); } else { // 如果不需要委托调用,则直接调用 this.LoadFile(); } //=========线程结束=========== this.BeginInvoke(new DelegateIsEnd(ISEnd)); } private void ISEnd() { wf.Visible = false; wf.Close(); wf.Dispose(); } private void LoadFile() { } private WaitingForm wf = nu
希望本文所述对大家C#程序设计有所帮助。
相关推荐
-
C#基于UDP进行异步通信的方法
本文实例讲述了C#基于UDP进行异步通信的方法.分享给大家供大家参考.具体如下: 服务器端: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace AsyncServer { public class UdpState { public UdpClient udp
-
C#中事件的定义和使用
事件的声明和使用与代理有很密切的关系,事件其实是一个或多个方法的代理,当对象的某个状态发生了变化,代理会被自动调用,从而代理的方法就被自动执行. 声明和使用一个事件需要如下步骤: 1.创建一个代理. 2.在类的内部利用event关键字声明事件,并且在类中定义调用事件的方法,也可以定义一个处理事件消息的方法. 声明一个事件的基本形式有两种: 修饰符 event 类型 标识符 修饰符 event 类型 标识符{get{};set{};} 其中: 修饰符是指C#语言的访问修饰符:类
-
详解C#中通过委托来实现回调函数功能的方法
委托(delegate)是一种可以把引用存储为函数的类型,这类似于c++中的函数指针. 回调函数 c++中的回调函数,就是用函数指针来实现的.类似的,c#中用委托,来实现回调函数的功能. 回调函数为什么被称为回调函数?比如你调用了一个函数,那么就叫调用,但是如果你在调用一个函数的时候,还需要把一个函数提供给该函数,让这个函数来调用你的函数,那么你提供的这个函数就被称为回调函数(callback). 对于python这样的动态语言而言,就没有c#,c++提供特殊的语法实现回调函数,因为在pytho
-
C#实现给DataGrid单元行添加双击事件的方法
本文实例讲述了C#实现给DataGrid单元行添加双击事件的方法.分享给大家供大家参考.具体如下: 现在我需要做到的功能是当我单击DataGrid某行时显示相对应选中的数据信息,在双击此相同行时弹出删除对话框,应该怎么做呢.由于单击问题很简单就不再阐述了,下面我说一下双击事件是怎么实现的. 这里用到了DataGrid的ItemDataBound事件,我们可以把下面的代码加入到所需的程序中就可实现双击的功能. private void DataGrid1_ItemDataBound( object
-
C#用匿名方法定义委托的实现方法
本文实例讲述了C#用匿名方法定义委托的实现方法.分享给大家供大家参考.具体实现方法如下: //用匿名方法定义委托 class Program { delegate string MyDelagate(string val); static void Main(string[] args) { string str1 = " 匿名方法外部 "; //中括号部分定义来了一个方法,没有名称,编译器会定指定一个名称 MyDelagate my = delegate(string param)
-
C#实现可捕获几乎所有键盘鼠标事件的钩子类完整实例
本文实例讲述了C#实现可捕获几乎所有键盘鼠标事件的钩子类.分享给大家供大家参考,具体如下: using System; using System.Text; using System.Runtime.InteropServices; using System.Reflection; using System.Windows.Forms; namespace MouseKeyboardLibrary { /// <summary> /// Abstract base class for Mous
-
C# 委托的三种调用示例(同步调用 异步调用 异步回调)
首先,通过代码定义一个委托和下面三个示例将要调用的方法: 复制代码 代码如下: public delegate int AddHandler(int a,int b); public class 加法类 { public static int Add(int a, int b) { Console.WriteLine("开始计算:" + a + "+" + b); Thread.Sl
-
浅谈C#中的委托、事件与异步
从刚接触c#编程到现在,差不多快有一年的时间了.在学习过程中,有很多地方始终似是而非,直到最近才弄明白. 本文将先介绍用法,后评断功能. 一.委托 基本用法: 1.声明一个委托类型.委托就像是'类'一样,声明了一种委托之后就可以创建多个具有此种特征的委托.(特征,指的是返回值.参数类型) public delegate void SomeKindOfDelegate(string result); 2.创建一个在1中创建的委托类型的委托. public SomeKindOfDelegate aD
-
C#自定义事件监听实现方法
本文实例讲述了C#自定义事件监听实现方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApp { /// <summary> /// 定义事件 /// </summary> class CustomEvent { /// <summary> /// 定义委托 /// &
-
使用C#来编写一个异步的Socket服务器
介绍 我最近需要为一个.net项目准备一个内部线程通信机制. 项目有多个使用ASP.NET,Windows 表单和控制台应用程序的服务器和客户端构成. 考虑到实现的可能性,我下定决心要使用原生的socket,而不是许多.NET中已经提前为我们构建好的组件, 像是所谓的管道, NetTcpClient 还有 Azure 服务总线. 这篇文章中的服务器基于System.Net.Sockets类异步方法. 这些允许你支持大量的socket客户端, 而一个客户端的连接是唯一的阻塞机制. 阻塞的时间是可以
随机推荐
- SQL语句实现查询并自动创建Missing Index
- Tomcat 9 免安装版配置的图文教程(详)
- JS实现漂亮的淡蓝色滑动门效果代码
- 使用Thinkphp框架开发移动端接口
- Python实现抓取城市的PM2.5浓度和排名
- ABP框架中的日志功能完全解析
- c++难以发现的bug(有趣)
- ajax类AJAXRequest v0.8.01 2008-01-31 最新版附使用帮助
- JavaScript数据类型学习笔记
- SQL Server简单查询示例汇总
- 基于JQuery打造无缝滚动新闻步骤详解
- jQuery实现右下角可缩放大小的层完整实例
- JavaScript中的变量定义与储存介绍
- JavaScript实现form表单的多文件上传
- 最新dvbbs 7.1sql提权得shell
- Serv-U 用户的另类盗取
- Java中StringUtils工具类进行String为空的判断解析
- 分享Git常用7大技巧和命令
- php实现的rc4加密解密类定义与用法示例
- PHP实现八皇后算法