Delegate.BeginInvoke例子
来源:互联网 发布:笨办法学python ex46 编辑:程序博客网 时间:2024/05/22 08:28
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CallBackTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//要进行异步的方法
private string MethodName(int num, out int ret)
{
ret = num;
return "HelloWorld";
}
//定义与方法同签名的委托
private delegate string DelegateName(int num, out int ret);
//回调方法(异步完成时,执行的方法,此方法只有IAsyncResult一个参数,但是该参数几乎万能,可以传递Object)
private void CallBackMethod(IAsyncResult ar)
{
DelegateName dn = (DelegateName)ar.AsyncState;
int i;
string r = dn.EndInvoke(out i, ar);//一定要EndInvoke,否则你的下场很惨
MessageBox.Show("异步完成了!i的值是"+i.ToString()+",r的值是"+r);
}
private void Form1_Load(object sender, EventArgs e)
{
//实例化委托并初赋值
DelegateName dn = new DelegateName(MethodName);
int i;
//实例化回调函数,把AsyncCallback看成是Delegate就懂了,实际上AsyncCallback是一种特殊的Delegate
AsyncCallback acb = new AsyncCallback(CallBackMethod);
//异步开始
//如果参数acb换成null则表示没有回调方法
//最后一个参数dn的地方,可以换成任意对象,该对象可以被回调方法从参数中获取出来,写成null也可以。
//参数dn相当于该线程的ID,如果有多个异步线程,可以都是null,但是绝对不能一样,不能是同一个object,否则异常
IAsyncResult iar = dn.BeginInvoke(1, out i, acb, dn);
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace CallBackTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//要进行异步的方法
private string MethodName(int num, out int ret)
{
ret = num;
return "HelloWorld";
}
//定义与方法同签名的委托
private delegate string DelegateName(int num, out int ret);
//回调方法(异步完成时,执行的方法,此方法只有IAsyncResult一个参数,但是该参数几乎万能,可以传递Object)
private void CallBackMethod(IAsyncResult ar)
{
DelegateName dn = (DelegateName)ar.AsyncState;
int i;
string r = dn.EndInvoke(out i, ar);//一定要EndInvoke,否则你的下场很惨
MessageBox.Show("异步完成了!i的值是"+i.ToString()+",r的值是"+r);
}
private void Form1_Load(object sender, EventArgs e)
{
//实例化委托并初赋值
DelegateName dn = new DelegateName(MethodName);
int i;
//实例化回调函数,把AsyncCallback看成是Delegate就懂了,实际上AsyncCallback是一种特殊的Delegate
AsyncCallback acb = new AsyncCallback(CallBackMethod);
//异步开始
//如果参数acb换成null则表示没有回调方法
//最后一个参数dn的地方,可以换成任意对象,该对象可以被回调方法从参数中获取出来,写成null也可以。
//参数dn相当于该线程的ID,如果有多个异步线程,可以都是null,但是绝对不能一样,不能是同一个object,否则异常
IAsyncResult iar = dn.BeginInvoke(1, out i, acb, dn);
}
}
}
运行结果:
- Delegate.BeginInvoke例子
- Delegate.BeginInvoke例子
- delegate的BeginInvoke和EndInvoke的小例子
- delegate.BeginInvoke 注意事项
- (delegate)BeginInvoke&EndInvoke
- Delegate的BeginInvoke()
- Control与Delegate的invoke 与begininvoke
- c# Delegate 例子
- dojo 委托 delegate 例子
- C# delegate event 例子
- Unity Event&Delegate 例子
- 使用delegate的例子
- delegate 和 control 的BeginInvoke方法的差异
- Delegate类提供了BeginInvoke()和EndInvoke()方法
- C# delegate方法invoke和beginInvoke的区别
- Control中的beginInvoke于Delegate中的beginInove一起使用
- Control 的 Invoke和BeginInvoke && Delegate 的 Invoke和BeginInvoke
- 看C# Delegate vs Event,Delegate和Control的Invoke和BeginInvoke 做笔记
- win7下安装CentOS 5.8双系统
- InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具
- Vb与报表(三.数据连接与代码实现)
- RTSP协议学习笔记
- ORACLE expdp-impdp使用
- Delegate.BeginInvoke例子
- 将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装
- attaching to appname问题解决方法
- J2EE SSH
- 输出三角形
- 在Windows8安装winpcap的问题
- VC----如何自动获取本机IP地址?
- PHP中redis的使用
- TWaver HTML5 继承结构和成员说明