CancellationTokenSource

CancellationTokenSource

如果该方法包含需要处理的参数,则递归调用异步方法是否安全?

public async Task<bool> ConnectAsync(CancellationTokenSource cancellationTokenSource)
{
    using CancellationTokenSource token = new CancellationTokenSource();
    await ConnectAsync(token).ConfigureAwait(false);
}

最佳答案

确保控件始终返回到创建它的方法的实例是安全的。所以只要你:


使用using语句或手动调用Dispose(),然后
await通话


然后,该对象将被正确处置,而不是在使用之前。

但是,与所有递归一样,您需要注意不要以stack overflow结尾。就像您编写的那样,该方法将最终导致堆栈溢出。

10-06 05:22