代码之家  ›  专栏  ›  技术社区  ›  Shahar Shokrani

当其他任务可能永远继续运行时,如何正确使用ContinueWith?[复制品]

  •  0
  • Shahar Shokrani  · 技术社区  · 7 年前

    如何使用 ContinueWith 当另一项任务有可能永远继续运行时,是否正确?

    例子:

    task 是无限的,但我只想等她一段特定的时间:

    var task = Task.Factory.StartNew(() => 
    {
        //Small chance for infinite loop
    });
    
    task.ContinueWith(t => {
        //We would still like to get here after a certion amount of time eventualy.
    });
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Milad    7 年前

    您可以运行另一个任务。请延迟等待

    var task = Task.Factory.StartNew(() => 
            {
                //Small chance for infinite loop
            });
            var delayTask = Task.Delay(2000); // A wait task 
            Task.WhenAny(delayTask,task).ContinueWith((t) =>
            {
                //check which task has finished 
            });
    

    但是您应该使用一种方法来停止第一个任务,比如超时或使用 CancellationTokenSource