不包含 GetAwaiter 的定义 - 如何重写此方法,c#,async-await"/>

首页 > 解决方案 > 不包含 GetAwaiter 的定义 - 如何重写此方法

问题描述

我得到了这个代码:

    public async Task myServerResponse()
    {
        Task.Run(new Func<Task>(..));
        await this.ConnectSomewhere(...); 
        ...
        // this method does not have any return
    }


    private async Task Connect()
    {
        try
        {
            bool myFlag = true;
            var taskAwaiter = this.myServerResponse().GetAwaiter();
            if (!taskAwaiter.IsCompleted)
            {
                await taskAwaiter;
                taskAwaiter = default(TaskAwaiter);
                myFlag = false;
            }
            if (myFlag)
                taskAwaiter.GetResult();
            
            ...

然而,在它说它await taskAwaiter;显示的地方

错误 CS1061:“TaskAwaiter”不包含“GetAwaiter”的定义,并且找不到接受“TaskAwaiter”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)

如何正确重写此方法?我认为那里的方法过于复杂。

标签: c#async-await

解决方案


好吧,看来您可以只使用async await和删除其余的东西:

 private async Task Connect()
    {
        try
        {
            await this.myServerResponse();
            ...

推荐阅读