c# - 当其他任务可能永远继续运行时,如何正确使用 ContinueWith?
问题描述
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.
});
解决方案
您可以运行另一个 Task.Delay 等待
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
});
但是您应该使用一种方法来停止 First Task Some How 超时或使用 CancellationTokenSource
推荐阅读
- javascript - 如何在这个html文档中打开指定的window.location页面?我需要在javascript中更改什么?
- javascript - 如何使用 wp_enqueue_script WordPress 将脚本添加为模块
- c# - IEnumerable
.Contains 默认不使用我自己的 IEqualityComparer - powershell - 用于下载文件并检查下载文件完整性的 Powershell 脚本
- keras - 在 keras 自定义损失函数中使用来自另一个模型的 y_pred
- c# - 加载非托管 dll 而不将其写入磁盘
- excel - Application.ThousandsSeparator 仅影响单元格、图表标签、轴不起作用
- python-3.x - 错误:---只能将str(不是“字节”)连接到str
- android - 我使用其他依赖项的 Android 库在构建时无法解析
- javascript - 禁用javascript时的noscript图像