阅读 70

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);
}
}
}
 
 
 

原文:https://www.cnblogs.com/kcjm/p/15207270.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐