代码之家  ›  专栏  ›  技术社区  ›  SharmaPattar

包含和不包含异步[重复]的任务返回类型

  •  18
  • SharmaPattar  · 技术社区  · 7 年前

    我对 async 关键字。

    假设我有两种方法,

    public async Task DoSomething1()
    {
        await Task.Run(() =>
        {
            for(int i = 0; i<3; i++)
            {
                Console.WriteLine("I m doing something:" + i);
            }
        });
    }
    

    public Task DoSomething2()
    {
        return Task.Run(() =>
        {
            for(int i = 0; i<3; i++)
            {
                Console.WriteLine("I m doing something:" + i);
            }
        });
    }
    

    据我所知,这两种方法都在等待。但是当我写一个有 Task 返回类型不带 异步 关键字我需要返回一个 任务 否则编译器将生成错误。方法应该返回其类型,这是一件常见的事情。但当我把它和 异步 关键字编译器生成另一个无法返回的错误 任务 . 那么这意味着什么呢?我在这里完全糊涂了。

    2 回复  |  直到 3 年前
        1
  •  6
  •   Jess    7 年前

    如果您使用 await 在代码中,您需要使用 async 方法上的关键字。

    如果您使用 异步 如果想要返回一个实际类型,可以像这样将该类型作为泛型任务返回 Task<int> .

    以下是 异步 方法:

    https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/async-return-types

    1. Task<TResult> ,用于返回值的异步方法。
    2. Task ,对于执行操作但不返回值的异步方法。
    3. void ,用于事件处理程序。
        2
  •  1
  •   Immac    7 年前

    (...) -异步。此关键字 允许在方法内部使用单词await,并且 修改方法处理其结果的方式。就是这样。

    该方法同步运行,直到找到单词await并且 word负责异步。Await是一个操作员 接收参数:等待(异步操作) 行为方式如下:

    从…起 here