gpt4 book ai didi

c# - 任务不等待 ContinueWith 完成

转载 作者:行者123 更新时间:2023-12-03 19:57:42 24 4
gpt4 key购买 nike

我有控制台应用程序和代码如下,

我的问题是在ContinueWith任务完成之前,控制台应用程序结束,它不等待continueWith完成,请指教。

请让我知道我遗漏了什么或不正确。

var task1 = Task<bool>.Factory.StartNew(() => DoProcess());

task1 .ContinueWith(
t1 => updateSuccess(),
TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.ExecuteSynchronously);

task1 .ContinueWith(
t => updateFault(),
TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);

task1.Wait();

最佳答案

你必须wait在任务上从主线程完成。简化它看起来像

var task1 = Task<bool>.Factory.StartNew(() => DoProcess());

successContinuation = task1 .ContinueWith(t1 => updateSuccess(),
TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.ExecuteSynchronously)
failureContinuation = task1 .ContinueWith( t => updateFault(),
TaskContinuationOptions.OnlyOnFaulted | TaskContinuationOptions.ExecuteSynchronously);

Task.WaitAny(successContinuation, failureContinuation);

我认为您没有意识到您正在创建一个将(实际上只是可能)在不同线程中执行的任务。当你开始你的任务时,你有两个不同的执行线程,主线程和你的任务将继续运行。如果您希望您的主线程(您的控制台应用程序)等待任务完成,您必须手动指定它。

关于c# - 任务不等待 ContinueWith 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com