【发布时间】:2015-06-19 19:36:56
【问题描述】:
我使用传递的取消令牌,以便可以干净地关闭我的服务。该服务具有不断尝试连接到其他服务的逻辑,因此令牌是打破在单独线程中运行的这些重试循环的好方法。我的问题是我需要调用具有内部重试逻辑的服务,但如果重试失败则在设定的时间段后返回。我想创建一个带有超时的新取消令牌,它将为我完成此操作。这样做的问题是我的新令牌没有链接到“主”令牌,所以当主令牌被取消时,我的新令牌仍然有效,直到它超时或建立连接并返回。我想做的是将两个令牌链接在一起,这样当主令牌被取消时,我的新令牌也将取消。我尝试使用CancellationTokenSource.CreateLinkedTokenSource 方法,但是当我的新令牌超时时,它也取消了主令牌。有没有办法用令牌做我需要做的事情,还是需要更改重试逻辑(可能无法轻松做到这一点)
这是我想做的:
主令牌 - 传递各种功能,以便服务可以干净地关闭。 临时令牌 - 传递给单个函数并设置为一分钟后超时
如果主令牌被取消,临时令牌也必须被取消。
当临时令牌到期时,不得取消主令牌。
【问题讨论】:
标签: c# .net cancellationtokensource cancellation-token