gpt4 book ai didi

c# - 多线程/异步请求并等待它们全部完成然后处理结果

转载 作者:太空狗 更新时间:2023-10-29 22:55:21 24 4
gpt4 key购买 nike

我已经(想要)对多个来源执行搜索请求。现在我过去做过一些多线程,但都是一劳永逸。

现在我想做的是在 3 个不同的对象上启动 3 个相同的请求,等待它们全部“完成”(这给了我第一个问题:他们怎么说“我完成了”,然后收集他们发给我的所有数据。

所以在伪代码中我有这个接口(interface):

interface ISearch
SearchResult SearchForContent(SearchCriteria criteria)

所以在代码中我创建了三个搜索服务:

ISearch s1 = new SearchLocal();
ISearch s2 = new SearchThere();
ISearch s3 = new SearchHere();

然后以多线程/异步方式对所有三个调用 SearchForContent(SearchCriteria criteria)

他们都带着他们的 SearchResult 返回给我,在他们全部完成后,我处理他们的 SearchResult 对象。

我希望这些文字行能让你明白我的想法:)

我正在从事 ASP.Net 3.5 C# 项目。

最佳答案

创建 AutoResetEvent 并将它们传递给 WaitHandle.WaitAll()

有一个例子here .

基本上:

1) 为每次搜索创建一个 AutoResetEvent 并将 false 传递给它的构造函数。

2) 创建线程并为每个线程运行搜索,最后,在 finally block 中的 AutoResetEvent 上调用 Set在 finally block 内调用 Set 非常重要,否则 WaitAll() 将无限期地等待。

3) 在生成线程后的代码中,调用 WaitHandle.WaitAll() 并将所有这些 AutoResetEvent 传递给它。此代码将等待,直到所有完成。

关于c# - 多线程/异步请求并等待它们全部完成然后处理结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370388/

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