使用await Task.Run时,异步方法无法返回void

时间:2018-08-05 09:28:47

标签: c#

我的代码如下:

private ICommand aBtnCmd;
private ICommand resetBtnCmd;

public ICommand ABtnCmd => aBtnCmd ?? (aBtnCmd = new Command(() => phrasesFrame.Btn((int)Settings.aBtn, 1)));
public ICommand ResetBtnCmd => resetBtnCmd ?? (resetBtnCmd = new Command(async () => await phrasesFrame.RBtn()));

使用方法:

async public Task Btn(int pts, int col)
{
    Change.points = true;
    await Task.Run(() => App.DB.IncrementPoints(Settings.cfs, phrase, pts, col));
}

async public Task RBtn()
{
    await Messages.ResetButtonClicked();
}

有人可以建议我如何从这些方法中返回吗?

我问这的原因是因为当我将鼠标悬停在此处的异步字上时

new Command(async

然后IDE会显示一条消息:

Asynchronous method '<anonymous' should not return void

1 个答案:

答案 0 :(得分:0)

您可以使用通用的Task版本

返回某些内容
Task<T>

其中T是要返回的对象的类型。

您的方法将如下所示:

    public async Task<T> GetSomeValue()
    { 
        //Your function body to return an object of type T.
    }