我正试图利用4.0网并行任务图书馆处理多种商品交易所的询问。 如果问题需要太多时间,我想取消,继续处理其余问题。
当有人问询超过门槛值时,该代码就停止了。 我认为我这样说,整个过程而不是单一交易都达到了取消的任务和时限。 如果我确定时间非常小(300米),那么它就要求进行所有搜索。
我认为我没有明显的东西。 事先感谢任何见解。
此外,这似乎还未停止漫长的执行。 这样做是否正确,一旦触发了长时间的争 que?
经修改的法典:
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
var query = searchString.Values.Select(c =>myLongQuery(c)).AsParallel().AsOrdered()
.Skip(counter * numToProcess).Take(numToProcess).WithCancellation(cts.Token);
new Thread(() =>
{
Thread.Sleep(5000);
cts.Cancel();
}).Start();
try
{
List<List<Threads>> results = query.ToList();
foreach (List<Threads> threads in results)
{
// does something with data
}
} catch (OperationCanceledException) {
Console.WriteLine("query took too long");
}