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("Length: {0}\n", length);
 9     }
10     catch (Exception)
11     {
12         // Process the exception if one occurs.
13     }
14 }
15
16 public async Task<int> ExampleMethodAsync()
17 {
18     var httpClient = new HttpClient();
19     int exampleInt = (await httpClient.GetStringAsync("http://msdn.microsoft.com")).Length;
20     ResultsTextBox.Text += "Preparing to finish ExampleMethodAsync.\n";
21
22     return exampleInt;
23 }
24 // Output:
25 // Preparing to finish ExampleMethodAsync.
26 // Length: 53292

在声明一个方法时,将其标为async,则说明方法中有await的异步内容。

调用async时,要使用await关键字。

在async方法中,会一直执行到await部分,这时将方法挂起,进行其他内容,等待其完成后,完成与其相关的部分。

如果程序包括从网络中下载获取数据,从文件中读入大量内容,这样占时较多的行为,将其设为异步执行可以很好的使整个程序更加流畅。

实例来源及参考链接:https://msdn.microsoft.com/zh-cn/library/hh156513.aspx

      https://msdn.microsoft.com/zh-cn/library/hh191443.aspx

2.Double.Parse和Double.TryParse都可以将字符串转化为double。例如“12345”可以转化为数字的12345

从名字上看,tryparse是不确定的转化,即在不确定string是否可以转换成double时使用。

当然,如果传入parse中的string也无法转换为double,也会出现错误。

两者的不同在于

  tryparse返回值类型为boolean,也就是说如果无法转换,就直接返回false

  而parse会直接转换,如果无法转换,会throw exception,内部如果无法解决,就会抛出方法。

  所以说,tryparse一般是用在if这样的语句里面例如:if(doublt.TryParse(str)){...}; 而parse是直接用赋值的,例如:double db=double.Parse(str);

  更多时候,TryParse是用另一种用法: double db; if(doublt.TryParse(str, out db)){...};如果转换成功,将db赋值为该值

时间: 2024-10-05 05:36:32

C#学习记录6——异步async 和 await的相关文章

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.Tex

[.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的异步行程

async和await关键字实现异步编程

async和await关键字实现异步编程 异步编程 概念 异步编程核心为异步操作,该操作一旦启动将在一段时间内完成.所谓异步,关键是实现了两点:(1)正在执行的此操作,不会阻塞原来的线程(2)一旦启动的此操作,可以继续执行其他任务.当该操作完成时,将调用回调函数来通知该操作已经结束. [注]:本人一直以为同步和异步都属于多线程的范畴,到今天才明白完全错误,异步和多线程是属于不同范畴,多线程和异步是并发的两种形式,并行处理和线程同步是多线程的两种形式,这是我当前的理解,不知是否有误,文中若有错误,

异步编程(Async和Await)的使用

.net4.5新特性之异步编程(Async和Await)的使用 一.简介 首先来看看.net的发展中的各个阶段的特性:NET 与C# 的每个版本发布都是有一个“主题”.即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#4.5异步编程 下面我来简单的介绍一下异步编程:异步编程,在 .NET Framework 4.5 和 Windows 运行时利用异步支持. 编译器可执行开发人员曾进行的高难度工作,且应用程序保留了一个类似于同步代码的逻辑结构. 因此,你只需做一小

.NET4.5新特性async和await修饰符实现异步编程

开篇 每一个版本的.net都会引入一些新的特性,这些特性方便开发人员能够快速实现一些功能.虽然.net版本一直在更新,但是新版本对旧版本的程序都是兼容的,在这一点上微软做的还是非常好的.每次学一个新内容,第一次接触的方法在脑海里占的位置还是比较重要的,从刚开始接触.net的多线程编程是使用Thread类,然后后面写的程序只要用到异步或者多线程就马上会想到用Thread,虽然知道委托的异步调用也能够实现,但是脑海里面的排在前面还是Thread类,在那个时候不知道他们之间的区别和优劣,也就不懂得如何

使用 Async 和 Await 的异步编程 #Reprinted#

异步方法容易编写 string urlContents = await client.GetStringAsync(); 以下特征总结了使上面一个异步方法. 方法签名包含一个 Async 或async 修饰符. 异步方法的名称以“Async”后缀,按照约定,关闭. 返回类型为下列类型之一: Task<TResult>,如果您的方法具有操作个线程类型 TResult 的返回语句. Task,如果方法没有返回语句或具有返回语句不操作. 无效 (在 Visual Basic 中子 ),如果您编写一个

多线程编程学习笔记——async和await(二)

接上文 多线程编程学习笔记——async和await(一) 三.   对连续的异步任务使用await操作符 本示例学习如何阅读有多个await方法方法时,程序的实际流程是怎么样的,理解await的异步调用 . 1.示例代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Thread

多线程编程学习笔记——async和await(三)

接上文 多线程编程学习笔记——async和await(一) 接上文 多线程编程学习笔记——async和await(二) 五.   处理异步操作中的异常 本示例学习如何在异步函数中处理异常,学习如何对多个并行的异步操作使用await时聚合异常. 1.程序示例代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

常见的异步方式async 和 await

之前研究过c#的async和await关键字,幕后干了什么,但是不知道为什么找不到相关资料了.现在重新研究一遍,顺便记录下来,方便以后查阅. 基础知识 async 关键字标注一个方法,该方法返回值是一个Task.或者Task<TResult>.void.包含GetAwaiter方法的类型.该方法通常包含一个await表达式.该表达式标注一个点,将被某个异步方法回跳到该点.并且,当前函数执行到该点,将立刻返回控制权给调用方. 以上描述了async方法想干的事情,至于如何实现,这里就不涉猎了. 个