gpt4 book ai didi

.net - 后台 worker 或线程池

转载 作者:行者123 更新时间:2023-12-03 12:53:14 26 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,该应用程序允许发生多个搜索请求,同时保持对用户界面的使用以允许进行交互。对于多个搜索请求,最初我只有一个搜索请求运行,并且用户交互仍然可以通过使用后台工作人员来完成。现在,我需要通过允许更多搜索功能并基本上只是将它们排队来扩展这些功能。我不确定是使用多个后台工作人员还是使用线程池,因为我希望能够随时了解每个搜索作业的进度。

如果我使用的是线程池,我所要做的就是将此添加到循环中,每次发出搜索请求时都会调用该循环

 ThreadPool.QueueUserWorkItem(AddressOf Search)

但是,如果使用backgroundworkers,这是我知道的唯一方法,我不是如何将它们添加到任何东西,而是添加到arraylist中,我可以从每个bgw调用reportprogress。

编辑:

所以例如这是我当前的代码
 For Each Thread In ThreadList
'Thread.Sleep(500)
SyncLock Me

If searchChoice = "google" Or fromUrl.Contains("google") Then
links = parsingUtilities.GetGoogleLinksFromHtml(fromUrl, html, searchItem)
posts = parsingUtilities.GetPostLinksFromHtml(links)
If links.Count = 0 Then
Exit Sub
End If
Exit For
.....

因此,在上面的代码中,链接和帖子是用于获取所需URL的arraylist,它们用于不同的搜索选择,最初我在链接和帖子上使用了同步锁,但有人告诉我改用同步锁。因此,从您的角度出发,我应该为每个搜索控件分配一个单独的数据控件,并在足够的时间后锁定相应的数据控件并将其传输以写入它。
谢谢

最佳答案

我通常不理会线程池。这是一个过程范围的资源,可以配置为具有不同的大小,尤其是在webapps中。但是,由于您的应用程序听起来像是客户端表单应用程序,因此您不会与其他任何应用程序共享线程池,而是可以根据需要进行配置。

您的用例比大多数情况更适合线程池,但是这样做没有很大的优势。

关于.net - 后台 worker 或线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789655/

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