private CancellationTokenSource LinkTimeoutCancelTokenSource(int timeout, CancellationToken cancel_token)
{
if (timeout>0) {
return CancellationTokenSource.CreateLinkedTokenSource(
closedCancelSource.Token,
(new CancellationTokenSource(timeout)).Token,
cancel_token
);
}
else {
return CancellationTokenSource.CreateLinkedTokenSource(
closedCancelSource.Token,
cancel_token
);
}
}