
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
总是看互联网类的文章大家有点腻了吧,哈哈,下面昆明达内官网导师和大家说说.Net多线程中的异步编程,这部分的知识对于学习.Net会有一定的帮助,希望大家能吸收这方面的知识,我们知道要实现异步编程的方式是多种多样的啊有,我导师文主要选择1种很好的方式讲述给大家,大家可以快快学起来吧!
使用异步委托。
达内科技导师在处理C#在中的delegate关键字的时候,动态生成了两个方法:BeginInvoke()和EndInvoke()。其中BeginInvoke()方法返回的对象实现了IAsyncResult接口,而EndInvoke()方法需要一个IAsyncResult类型作为参数。所以,昆明计算机培训导师由BeginInvoke()方法返回的对象IAsyncResult,它允许调用的线程在后面通过EndInvoke()方法来获取异步方法返回的结果。为更直观的理解,下面直接通过例子来说明吧!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace test1
{
class Program
{
static void Main(string[] args)
{
Async();
}
/// <summary>
///定义一个委托
/// </summary>
/// <param ame="x"></param>
/// <param ame="y"></param>
/// <returns></returns>
private delegate int DelegaIn(int x, int y);
private static void Async()
{
//输出正在执行的线程ID
Console.WriteLine("输出正在执行的线程ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
//异步模式下调用
DelegaIn delegaObj = new DelegaIn(Add);
IAsyncResult async = delegaObj.BeginInvoke(10, 20,null,null);
//主线程继续执行其他任务
Console.WriteLine("主线程继续执行其他任务!!!");
int answer = delegaObj.EndInvoke(async);
Console.WriteLine("Add方法结束结果:" + answer);
}
private static int Add(int x, int y)
{
System.Threading.Thread.Sleep(1000 * 5);
//输出次线程ID
Console.WriteLine("输出次线程ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
Console.WriteLine("Add方法开始");
return x + y;
}
}
}