C# 异步 async 和 await

1、 页面头部 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Async="true" %>

2、

protected async void Button1_Click(object sender, EventArgs e)
{
//TextBox1.Text = new Class1().Start();

int contentLength = await AccessTheWebAsync();    //这里会阻塞后面的执行
TextBox1.Text += "1245";
TextBox1.Text += contentLength;
}

async Task<int> AccessTheWebAsync()  // 这里的返回值类型 Task<T> void  Task
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");

DoIndependentWork();

string urlContent = await getStringTask;

return urlContent.Length;

}

void DoIndependentWork()
{
TextBox1.Text += "Working.......";
}

第二种方式:

public string Start()
{
Diaplay();   //这里不会阻止线程执行
return result.ToString() + "12454";
}

public async void Diaplay()
{
double result = await GetValueAsync(124.12, 1.122);

}

Task<double> GetValueAsync(double num1, double num2)
{
return Task.Run(() =>
{
for (int i = 0; i < 10000; i++)
{
num1 = num1 / num2;
}
return num1;
});
}

时间: 2024-10-25 19:20:52

C# 异步 async 和 await的相关文章

C#学习记录6——异步async 和 await

async可以声明异步处理过程. 一般是将方法声明为async,在其中有await内容 1 private async void StartButton_Click(object sender, RoutedEventArgs e) 2 { 3 4 ResultsTextBox.Text += "\n"; 5 try 6 { 7 int length = await ExampleMethodAsync(); 8 ResultsTextBox.Text += String.Format

【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就具体看看编译器到底在背后帮我们做了哪些复杂的工作的. 二.同步代码存在的问题 对于同步的代码,大家肯定都不陌生,因为我们平常写的代码大部分都是同步的,然而同步代码却存在一个很严重的问题,例如我们向一个Web服务器发出一个

.net4.5的异步 async await 和Task

首先应该明白Task的概念-----任务 //这是一种优于Thread,甚至是ThreadPool的东西 而且是默认异步 再来理解async和await: 1.async只是配合await,用来声明异步方法的关键字: 2.async和await之间,await才是关键,直接含义——"异步等待",主线程运行至异步方法内的await处,一般情况下主线程会立即返回上层方法,而await处后续的任务(方法)会新开线程继续执行,新开线程在执行“等待”出任务(方法)结果后,会接着运行完异步方法内a

Async和Await进行异步编程

使用Async和Await进行异步编程(C#版 适用于VS2015) 你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很困难. VS2012介绍了简单的方法,那就是异步编程,它在.Net Framework 4.5和Windows 运行时提供了异步支持.编译器做了开发者以前做的困难的工作,而且你的应用保持了类似于异步代码的逻辑结构.结果,你轻易地就获得了所有异步编程的优势. 异步提升响应 异步对于可能阻塞的活动是至关

使用 Async 和 Await 的异步编程

来自:http://msdn.microsoft.com/library/vstudio/hh191443 异步对可能起阻止作用的活动(例如,应用程序访问 Web 时)至关重要. 对 Web 资源的访问有时很慢或会延迟. 如果此类活动在同步过程中受阻,则整个应用程序必须等待. 在异步过程中,应用程序可继续执行不依赖 Web 资源的其他工作,直至潜在阻止任务完成. 下表显示了异步编程提高响应能力的典型区域. 从 .NET Framework 4.5 和 Windows 运行时中列出的 API 包含

[.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库

此为文章备份,原文出处(我的网站)  [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库 http://www.dotblogs.com.tw/mis2000lab/archive/2014/05/08/ado.net4.5_async_await_20140508.aspx 以前的ADO.NET也能作  "异步"(Async,大陆说法:异步),可以参考 KKBruce 2009/11月的文章: SQLCOMMAND的异步行程

C#的多线程——使用async和await来完成异步编程(Asynchronous Programming with async and await)

https://msdn.microsoft.com/zh-cn/library/mt674882.aspx 侵删 更新于:2015年6月20日 欲获得最新的Visual Studio 2017 RC文档,参考Visual Studio 2017 RC Documentation. 使用异步编程,你可以避免性能瓶颈和提升总体相应效率.然而,传统的异步方法代码的编写方式比较复杂,导致它很难编写,调试和维护. Visual Studio 2012引入了一个简单的异步编程的方法,依赖.NET Fram

async和await异步编程资源汇总

中文资料 使用 Async 和 Await 的异步编程 以上这篇文章是微软的,讲的很详细,还包括了大量的实验和实例代码,比如 演练:使用 Async 和 Await 访问 Web 如何:使用 Task.WhenAll 扩展异步演练 如何:使用 Async 和 Await 并行发起多个 Web 请求 取消一个异步任务或一组任务 在一段时间后取消异步任务 在完成一个异步任务后取消剩余任务 以及其他的资源链接,还有相应的英文版本,英文好的朋友可以直接看原版 除了微软的之外,Steve Cleary作为

使用Async和Await进行异步编程(C#版 适用于VS2015)

你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很困难. VS2012介绍了简单的方法,那就是异步编程,它在.Net Framework 4.5和Windows 运行时提供了异步支持.编译器做了开发者以前做的困难的工作,而且你的应用保持了类似于异步代码的逻辑结构.结果,你轻易地就获得了所有异步编程的优势. 异步提升响应 异步对于可能阻塞的活动是至关重要的.例如当你的应用访问Web的时候,访问web资源有时有点慢或者延