什么是同步和异步方法?

What's a sync and async method?

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

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.
     }
{

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

  1. 同步表示两个或多个操作运行在同一个 上下文(线程),以便一个可以阻塞另一个。
  2. 同步意味着两个或多个操作顺序发生。
  3. 异步表示两个或多个操作运行在不同的 上下文(线程),以便它们可以 运行 并发并且不阻塞 彼此。
  4. 异步意味着两个或多个操作异步发生。

您可以在以下主题中阅读更多内容: http://www.codeproject.com/Articles/127660/What-are-actually-synchronous-asynchronous-operati

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

执行冗长的操作(例如从 Internet 获取数据)时,您不希望在主线程上等待该数据,因为您 "block" 该线程不会响应用户输入(例如,单击取消按钮)

为了解决这个问题,您将长 运行 任务放在它自己的线程上。 C# 使这变得简单,您只需使用 await 关键字,函数将等待工作完成而不会阻塞主线程。

单词 await 是一个 "keyword" -- 它的使用是为这个目的保留的。要表明函数中有等待,您必须将函数标记为异步。如果您确实将其标记为异步,编译器将期望至少有一个等待。

你的例子:

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

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

希望对您有所帮助

杰西