C#的演化
在这里主要讲的是C#5.0的焦点特性异步
异步的例子
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace 异步编程
{
class Program
{
static void Main(string[] args)
{
MyDownloadString ds = new MyDownloadString();
ds.DoRun();
}
}
class MyDownloadString
{
Stopwatch sw = new Stopwatch();
public void DoRun()
{
const int LargeNumber = 600000;
sw.Start();
Task<int> t1 = CountCharactersAsync(1, "http://www.microsoft.com");
Task<int> t2 = CountCharactersAsync(2, "http://www.illustratedcsharp.com");
CountToALargeNumber(1, LargeNumber);
CountToALargeNumber(2, LargeNumber);
CountToALargeNumber(3, LargeNumber);
CountToALargeNumber(4, LargeNumber);
Console.WriteLine("Chars in http://www.microsoft.com :{0}", t1.Result);
Console.WriteLine("Chars in http://www.illustratedcsharp.com :{0}", t2.Result);
}
private async Task<int> CountCharactersAsync(int id, string site)
{
WebClient wc = new WebClient();
Console.WriteLine("Starting call {0}: {1, 4 NO} ms", id, sw.Elapsed.TotalMilliseconds);
string result = await wc.DownloadStringTaskAsync(new Uri(site));
Console.WriteLine(" Call{0} completed : {1, 4:NO} ms", id, sw.Elapsed.TotalMilliseconds);
return result.Length;
}
private void CountToALargeNumber(int id, int value)
{
for (long i = 0; i < value; i++) ;
Console.WriteLine(" End counting {0}:{1, 4:NO} ms", id, sw.Elapsed.TotalMilliseconds);
}
}
}
本文介绍C#5.0中异步编程的关键特性,并通过具体示例演示如何使用async和await关键字实现高效的并发操作。示例中包括了网络请求与本地计算任务的并行处理。

351

被折叠的 条评论
为什么被折叠?



