C# 当我调用一个异步方法时,我应该使用什么返回类型来表示成功?

C# 当我调用一个异步方法时,我应该使用什么返回类型来表示成功?,c#,C#,这是我的。代码还有更多内容,但我只是把这个片段放进去,让问题变得更小 public async Task GetCards(CancellationTokenSource cts) { try { while (true) { await CheckCardAvailability(cts); } } catch

这是我的。代码还有更多内容,但我只是把这个片段放进去,让问题变得更小

    public async Task GetCards(CancellationTokenSource cts)
    {
        try
        {
            while (true)
            {
                await CheckCardAvailability(cts);
            }
        }
        catch (TaskCanceledException)
        {
            cts.Dispose();
        }
    }

    private async Task CheckCardAvailability(CancellationTokenSource cts)
    {
        if (Counts.selectedCardCount == 0)
        {
            CardCountZeroMessages();
            SetMessageView(false);
            await Task.Delay(500, cts.Token);
            return;
        }
        if (XYX == 0)
        {
            // other code
            await Task.Delay(500, cts.Token);
            return;
        }
    }

我这里有一个简单的返回,但是我是否应该做不同的返回,因为返回类型是Task?请注意,我添加了退货,因为我有很多这样的if条件,我不想做很多if-else-if

>P>正如PANAGIOITSKANAVOS所提到的,您可以考虑将代码更改为:

public async Task GetCards(CancellationTokenSource cts)
{
    try
    {
        while (true)
        {
            CheckCardAvailability(cts);
            await Task.Delay(500, cts.Token); // or something with a timer
        }
    }
    catch (TaskCanceledException)
    {
        cts.Dispose();
    }
}

private /*async Task*/void CheckCardAvailability(CancellationTokenSource cts)
{
    if (Counts.selectedCardCount == 0)
    {
        CardCountZeroMessages();
        SetMessageView(false);
        // await Task.Delay moved outside
    }
    if (XYX == 0)
    {
        // other code
        // await Task.Delay moved outside
    }
}

任务
异步
负责创建
任务
。因为它是一个
任务
,而不是一个
任务
,所以它不会包含任何结果,或者只是一个任务。如果你取消等待,你会得到一个例外。如果没有,则函数成功。这里的回答应该可以帮助您:@Alan2如果您打算使用异步延迟进行轮询,请从
CheckCardAvailability
中拉出
任务。延迟
CheckCardAvailability
似乎不执行任何异步工作,因此它不应该是
async Task
。System.Threading.Timer是另一种选择