什么是同步和异步方法?

时间:2016-08-03 13:56:17

标签: c# asynchronous synchronous

什么是同步方法,什么是异步方法?同步和异步方法有什么区别?我何时必须使用同步或异步方法? 我问这些问题因为我不明白:

public async void ReadData(filepath)
{
    CreateDoc("hello");    //<------ Why I can't do that ?
}

public void CreateDoc(string astring)
{
    Debug.WriteLine(astring);
}

为什么我不能这样做? :

public async void ReadData(filepath)
{
     var BarreDroite = new string[] { "|" };
     foreach (string tableArret in items.Split(BarreDroite, StringSplitOptions.RemoveEmptyEntries))
     {
         listeArret.Add(tableArret); //<---- Here appear the problem.
     }
{

我问这个问题,因为我在网上找不到明确的解释。

2 个答案:

答案 0 :(得分:1)

函数和其他操作在&#34;线程上运行。&#34;线程只是一串操作,但一次可以有多个线程。在某些方面,最重要的线程是主线程,通常称为UI线程,因为这是用户界面被控制的地方。

当执行冗长的操作(例如从Internet获取数据)时,您不希望等待主线程上的数据,因为您将阻止&#34;阻止&#34;该线程响应用户输入(例如,单击取消按钮)

要解决此问题,请将长时间运行的任务放在自己的线程上。 C#使这很简单,只需使用await关键字,该函数将等待完成工作而不会阻塞主线程。

await这个词是&#34;关键字&#34; - 它的用途是为此目的而保留的。要发出函数中有await的信号,必须使用async标记该函数。如果你把它标记为异步,编译器至少会有一个等待。

您的示例:

public async void ReadData(filepath)
{
    CreateDoc("hello");    //<------ Why I can't do that ?
}

您已将此方法标记为异步,但您没有等待

希望这有帮助

杰西

答案 1 :(得分:0)

  1. 同步表示两个或多个操作同时运行 上下文(线程),以便可以阻止另一个。
  2. 同步意味着两个或多个操作按顺序发生。
  3. 异步表示两个或多个操作正在以不同方式运行 上下文(线程),以便它们可以并发运行而不会阻塞 彼此。
  4. 异步意味着两个或多个操作异步发生。
  5. 您可以在以下主题中阅读更多内容: http://www.codeproject.com/Articles/127660/What-are-actually-synchronous-asynchronous-operati