欢迎光临
我的个人博客网站

c# 异步调用 利用委托异步调用

1:调异步调用无回调函数
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Threading;
 
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
new AsynchronousTest().Test();
}
}
 
public class AsynchronousTest
{
///
/// 第一步:创建委托
///
///
///
///
public delegate int deletest(int a, int b);
///
/// 第二步:创建方法
///
///
///
///
public int Add(int a, int b)
{
Thread.Sleep(500);
return a + b;
}
///
/// 第三步:调用
///
public void Test()
{
var d = new deletest(Add);
IAsyncResult res = d.BeginInvoke(1, 2, null, null);
}
}
}
2:异步调用有回调函数
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Threading;
 
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
new AsynchronousTest().Test();
}
}
 
public class AsynchronousTest
{
///
/// 第一步:创建委托
///
///
///
///
public delegate int deletest(int a, int b);
///
/// 第二步:创建方法
///
///
///
///
public int Add(int a, int b)
{
Thread.Sleep(500);
return a + b;
}
///
/// 回调函数
/// 说明:只能是无返回值
/// 参数只能是IAsyncResult
///
public void CallbackF(IAsyncResult result)
{
//AsyncDelegate 属性可以强制转换为用户定义的委托的实际类。
deletest test = (deletest)((System.Runtime.Remoting.Messaging.AsyncResult)result).AsyncDelegate;
var d = test.EndInvoke(result); //被调用方法返回值 Add()的返回值
 
//需要处理的事情
//…………….
}
///
/// 第三步:调用
///
public void Test()
{
var d = new deletest(Add);
//new AsyncCallback(CallbackF) 回调函数
IAsyncResult res = d.BeginInvoke(1, 2, new AsyncCallback(CallbackF), null);
}
}
}
 
 
 
赞(0) 打赏
未经允许不得转载:张拓的天空 » c# 异步调用 利用委托异步调用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏