C# 当其他任务可能永远继续运行时,如何正确使用ContinueWith?

C# 当其他任务可能永远继续运行时,如何正确使用ContinueWith?,c#,asynchronous,continuewith,C#,Asynchronous,Continuewith,当另一个任务有可能永远继续运行时,如何正确使用ContinueWith 例子: 任务是无限的,但我只想等她一段特定的时间: 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 even

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

例子:
任务
是无限的,但我只想等她一段特定的时间:

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.
});

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

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 
        });
但您应该使用一种方法来停止第一个任务,或者使用它
您可以运行另一个任务。请延迟等待

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 
        });
但您应该使用一种方法来停止第一个任务,或者使用它

简单的回答是你不。。。这没有任何意义,如果您想要一个可能的永无止境的任务,并且希望继续执行,那么您就没有适合该任务的工具job@Saruman但是我想保护自己,不要等太久。你到底是如何使用
。继续使用
?您是检查
t
是否有错误,还是只是想执行一些业务逻辑?简单的回答是您不。。。这没有任何意义,如果您想要一个可能的永无止境的任务,并且希望继续执行
,那么您就没有适合该任务的工具job@Saruman但是我想保护自己,不要等太久。你到底是如何使用
。继续使用
?您是检查
t
是否有错误,还是只想执行一些业务逻辑?如果您不在意,线程池中的一个线程可能永远工作。有时我怀疑我的操作系统也是这样工作的@AccessDenied你是对的,我更新了答案continue的位置,更改后它将在“task”完成或“delayTask”完成后运行,以先发生的为准。如果你不介意,线程池中的一个线程可能永远工作。有时我怀疑我的操作系统也是这样工作的@AccessDenied您是对的,我会更新答案继续更改的位置,以便在“任务”完成或“延迟任务”完成后运行,以先发生的为准