异步等待链接如何停止

问题描述 投票:0回答:1

(新手到异步/等待)

我正在链接一个Initialize()函数,该函数被深入到很多类。 每个类都有这个初始化方法:

    public async Task Initialize(string fileName)

当我进入最后一堂课时,我该怎么办? 我想运行一个简单的函数,如:

public async Task Initialize(string dllPath)
{         
    await PrintThePath(dllPath);
}

public void PrintThePath(string dllPath)
{
     Console.WriteLine(dllPath);
}

当然我得到“无法等待无效”的错误。 从逻辑上说,我做错了什么。

有人可以解释一下吗?

c# asynchronous .net-4.5 async-await c#-5.0
1个回答
3
投票

在这种情况下,只需在没有PrintThePath的情况下直接调用await,因为它是一个简单的同步方法。

public async Task Initialize(string dllPath)
{
    PrintThePath(dllPath);
}

看看这个样本虽然似乎没有理由将Initialize标记为async。它没有做任何async工作,也不是override方法。本身没有必要将此方法标记为async(并且编译器会警告您这一点)

编辑

OP指定他们建立警告作为错误,并需要维持这种模式,即使Initialize实际上不是await。这是禁止警告的代码

#pragma warning disable 1998
    public async Task Initialize(string dllPath)
    {
        PrintThePath(dllPath);
    }
#pragma warning restore 1998
© www.soinside.com 2019 - 2024. All rights reserved.