小编Rob*_*ann的帖子

CancellationTokenSource.CancelAfter 不起作用

我正在尝试基于这篇文章(但带有任务)实现一些重试逻辑 编写重试逻辑的最干净的方法?

重试逻辑的想法是实现第二个任务,在给定的时间后触发取消

void Main()
{
    RetryAction(() => Sleep(), 500);
}

public static void RetryAction(Action action, int timeout)
{
    var cancelSource = new CancellationTokenSource();                
    cancelSource.CancelAfter(timeout);

    Task.Run(() => action(), cancelSource.Token);    
}

public static void Sleep() 
{
    System.Threading.Thread.Sleep(5000);
    "done".Dump();
}
Run Code Online (Sandbox Code Playgroud)

上面是一个 linqPad 片段(因此是“done”.Dump())

知道为什么 CancelAfter 永远不起作用吗?

c# task linqpad

5
推荐指数
1
解决办法
7699
查看次数

标签 统计

c# ×1

linqpad ×1

task ×1