delegate.BeginInvoke 注意事项
来源:互联网 发布:windows 删除服务工具 编辑:程序博客网 时间:2024/05/18 02:47
在工作中经常用到一些异步处理,这时会用到多线程。其实在很多时候都可以使用 delegate.BeginInvoke的方式来实现异步,避免了使用线程类。
但作为一个基础的知识点,您还是应该注意:
1、参数传递:
private Func<int,string> DoSomting;
private void Do()
{
DoSomting = new Func<int,string>(ShowMess);
AsyncCallback callBack = new AsyncCallback(CallBack);
IAsyncResult re = DoSomting.BeginInvoke( 10 /*代理所指方法的参数列表*/ , CallBack /*回掉方法*/ , null/*需要给CallBack方法的参数*/ );
DoSomting.EndInvoke(re);
}
private string ShowMess(int value)
{
return "测试";
}
private void CallBack(IAsyncResult re)
{
}
2、返回值
获取 EndInvoke 执行后的返回值。
更改上面的代码,获取ShowMess的返回值
IAsyncResult re = DoSomting.BeginInvoke( 10 , CallBack , null);
var mess = DoSomting.EndInvoke(re);//mess 为ShowMess方法的返回值
3、BeginInvoke 回掉方法的执行.
private void CallBack(IAsyncResult re)
{
Func<int,string> doSomting = re.AsyncState as Func<int, string>;
doSomting.EndInvoke(re);
MessageBox.Show("完成!");
}
a、传递参数
IAsyncResult re = DoSomting.BeginInvoke( 10 /*代理所指方法的参数列表*/ , CallBack /*回掉方法*/ , DoSomting/*需要给CallBack方法的参数*/ );
b、使用re.AsyncState获取参数.
4、IAsyncResult 的 AsyncWaitHandle.WaitOne(int,bool);的执行。
int : 表示等待的时间。
bool: true 在等待int间隔后,如果还未结束,则继续等待。
false在等待int间隔后,如果还未结束,则终止等待。
- delegate.BeginInvoke 注意事项
- Delegate.BeginInvoke例子
- Delegate.BeginInvoke例子
- (delegate)BeginInvoke&EndInvoke
- Delegate的BeginInvoke()
- Control与Delegate的invoke 与begininvoke
- delegate的BeginInvoke和EndInvoke的小例子
- 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 做笔记
- iOS开发-Delegate 代理 使用和注意事项
- Mcad学习笔记之委托再理解(delegate的构造器,MulticastDelegate,BeginInvoke,EndInvoke,Invoke4个方法的探讨)
- SharePoint 2013 中使用 delegate control AdditionalPageHead 的注意事项
- delegate
- delegate
- [Sharing] Google Map Android App Source Code
- if else 的代码重构
- [Sharing] Open Source LBS Navigation, Routing Android App Source Code
- 不同时间出售不同商品
- “小把戏”带来大收益
- delegate.BeginInvoke 注意事项
- french
- flash-chart1
- 高手,切记,记住你就牛了
- 解决IIS中无法运行aspx文件,提示:服务器应用程序不可用
- 在Visual C++ 6.0环境下浏览目录对话框的设计
- 1个端口实现宿舍上4个bras,破除东大无语的宿舍端口不全开的限制!【东南大学】
- Open Flash Chart在JSF工程中的安装与使用(swfobject2.0)
- xpath路径表达式笔记