WP7下的异步
先来介绍一下异步所需要的组件,Async CTP Refres微软在2011年4月13号发布了一个VS2010 的补丁,这个补丁可以运用在Windows Phone 7的开发中,也可以运用在所有的.NET 平台环境中。
CTP有几个新的关键字:
- async: 标记一个函数为异步函数,而这个函数必须返回的是viod ,Task, Task<T> 这三种类型。在一个异步函数的里面,你可以使用await 表达式来等待一个任务。换句话说,把当前的功能的执行过程停止,直到你要求等待的那个任务执行完成。(编程语言负责设置和处理流程的继续)。
- await:让执行流程停止在当前的函数直到返回类型是Task或者Task<T>的函数调用结束,然后执行过程继续到调用await的函数。
- Task:用来展现异步操作和表现出检查当前执行状态所需要的信息或者await函数直到执行到最后。
- TaskEx:允许一些Helper和Utililty方法,让异步代码可以在不同的线程或者await多个任务结束。
下面介绍一个简单异步调用
调用viod类型的异步函数
11234567public
static
void
WriteTxt()
{
Console.WriteLine(
"Start Thread---"
);
WriteLine();
Console.WriteLine(
"End Thread---"
);
Console.ReadLine();
}
上面方法中WriteLine() 是async 关键字的异步函数
12345public
static
async
void
WriteLine()
{
string
a = await NewLine();
Console.WriteLine(a);
}
在这个方法中 NewLine() 是Task<T>类型的方法,在调用Task<T>类型方法前使用关键字await,可以使这个方法等待NewLine()执行结束了,才执行Console.WriteLine(a).而不影响WriteLine()函数中的Console.WriteLine("End Thread---")执行。
123456789public
static
Task<
string
> NewLine()
{
var
task =
new
Task<
string
>(() => {
Thread.Sleep(5000);
return
"AAA"
;
});
task.Start();
return
task;
}
这段代码是异步的关键,构建一个Task对象,Task<T> 的T就是函数返回的最终类型。就是Task<string> NewLine() 是写具体异步所需要执行的逻辑代码。
这个代码的执行结果应该是
分类:
Windows Phone 7
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp