gpt4 book ai didi

c# - 在对象的并行 linq 中指定任务超时

转载 作者:行者123 更新时间:2023-11-30 12:29:40 24 4
gpt4 key购买 nike

我有一个图片列表,我想并行处理,但有超时。我的旧代码通过对项目进行分页并使用 WaitHandles 来完成此操作,但我想使用 .Net 4 中可用的新 Parallel Linq 或 Tasks 库。

以下代码片段正在运行,如何为其添加超时? (超时将针对每个任务执行,而不是针对所有要处理的项目的超时)

   private PictureList FetchPictures(List<Picture> wallResults) 
{
wallResults
.AsParallel()
.WithDegreeOfParallelism(10)
.ForAll(delegate(Picture p){

最佳答案

您可以使用 WithCancellation()为此:

var cts = new CancellationTokenSource(timeout);

wallResults
.AsParallel()
.WithCancellation(cts.Token)
.WithDegreeOfParallelism(10)
.ForAll(p => { …

如果您不能使用 .Net 4.5,您将无法使用 CancellationTokenSource 的超时接受构造函数,因此您必须使用 Timer手动。

关于c# - 在对象的并行 linq 中指定任务超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158360/

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