异步与等待怎么在c#中使用

  

异步与等待怎么在c#中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

异步和等待是代码标记,它标记代码位置为任务完成后控件应该恢复的位置。

下面让我们举几个例子来更好进行理解吧

c#中异步和等待关键字的示例

我们将采用控制台应用程序进行演示。

<强>第一个例子

在这个例子中,我们将采取两个不相互依赖的方法。

class 程序   {,   static 才能;void  Main (string [], args)   ,{大敌;   Method1 ();   Method2 ();   Console.ReadKey ();   ,,},   ,   public 才能static  async  Task  Method1 ()   ,{大敌;   await  Task.Run((),=比;   ,,,{,   ,,,,,for  (int 小姐:=,0;,小姐:& lt;, 100;,我+ +)   ,,,,,{,   Console.WriteLine (“, Method  1“),,   ,,,,,},   ,,,}),,   ,,},   ,   ,   public 才能static  void  Method2 ()   ,{大敌;   ,,,for  (int 小姐:=,0;,小姐:& lt;, 25;,我+ +)   ,,,{,   Console.WriteLine (“, Method  2,),,   ,,,},   ,,},   }

在上面给出的代码中,方法1和方法2不相互依赖,我们是从主方法调用的。

在这里,我们可以清楚地看的到,方法1和方法2并不是在等待对方完成。

输出

异步与等待怎么在c#中使用“> </p> <p>现在来看第二个例子,假设我们有方法3,它依赖于方法1 </p> <p> <强>第二个例子</强> </p> <p>在本例中,方法1将总长度作为整数值返回,我们在3中方法以长度的形式传递一个参数,它来自方法1 . </p> <p>在这里,在传递3中方法的参数之前,我们必须使用等待关键字,为此,我们必须使用调用方法中的异步关键字。</p> <p>在控制台应用程序的主方法中,因为不能使用异步关键字而不能使用等待关键字,因为它会给出下面给出的错误。(但是如果你使用的是c# 7.1及以上的方法是不会有问题的,因为c# 7.1及以上的语法支持面方法前加异步)</p> <p> <img src= class 程序   {,   static 才能;void  Main (string [], args)   ,{大敌;   callMethod ();   Console.ReadKey ();   ,,},   ,   public 才能static  async  void  callMethod ()   ,{大敌;   Task, Method1 ()   ,{大敌;   ,,,int  count =, 0;   await  Task.Run((),=比;   ,,,{,   ,,,,,for  (int 小姐:=,0;,小姐:& lt;, 100;,我+ +)   ,,,,,{,   Console.WriteLine (“, Method  1“),,   count  +=, 1;   ,,,,,},   ,,,}),,   ,,,return 计算;   ,,},   ,   public 才能static  void  Method2 ()   ,{大敌;   ,,,for  (int 小姐:=,0;,小姐:& lt;, 25;,我+ +)   ,,,{,   Console.WriteLine (“, Method  2,),,   ,,,},   ,,},   ,   public 才能static  void  Method3 (int 计数)   ,{大敌;   Console.WriteLine (“Total  count  is “, +,数);   ,,},   }

在上面给出的代码中,方法3需要一个参数,即方法1的返回类型。在这里,等待关键字对于等待方法1任务的完成起着至关重要的作用。

输出

异步与等待怎么在c#中使用“> </p> <p> <强>第三个例子</强> </p> <p>。净Framework4.5中有一些支持API, Windows运行时包含支持异步编程的方法。</p> <p>在异步和等待关键字的帮助下,我们可以在实时项目中使用所有这些,以便更快地执行任务。</p> <p>包含异步方法的API有HttpClient, SyndicationClient, StorageFile, StreamWriter, StreamReader, XmlReader, MediaCapture, BitmapEncoder, BitmapDecoder等。</p> <p>在本例中,我们将异步读取大型文本文件中的所有字符,并获取所有字符的总长度。</p> <pre类= class 程序   {,   static 才能;void  Main ()   ,{大敌;   Task  Task =, new 任务(CallMethod);   task.Start ();   task.Wait ();   Console.ReadLine ();   ,,},   ,   static 才能async  void  CallMethod ()   ,{大敌;   ,,,string  filePath =,“E: \ \ sampleFile.txt",,   Task

异步与等待怎么在c#中使用