原因在于如果是
另一个想法是创建一个组合令牌。
更新。这样的做法是否可行?我需要注意哪些问题?垃圾回收是否会按需执行?
CancellationToken.None
的话,我需要添加一个超时时间(因此需要来自CancellationTokenSource
的新CancellationToken
),例如:if (cancellationToken == CancellationToken.None)
{
var tokenSource = new CancellationTokenSource();
tokenSource.CancelAfter((int)_timeout.TotalMilliseconds);
cancellationToken = tokenSource.Token;
}
另一个想法是创建一个组合令牌。
更新。这样的做法是否可行?我需要注意哪些问题?垃圾回收是否会按需执行?
public async Task<int> InternalActionAsync(CancellationToken token)
{
// do something with the token...
return 1;
}
public Task<int> ExternalActionAsync(CancellationToken token = default(CancellationToken))
{
var internalTokenSource =
new CancellationTokenSource((int)_timeout.TotalMilliseconds);
var linkedTokenSource =
CancellationTokenSource.CreateLinkedTokenSource(token,
internalTokenSource.Token);
return InternalActionAsync(linkedTokenSource.Token);
}