时间:2019-03-17 标签:c#asyncwebclient

标签 c# asynchronous webclient

我继承了一个 C# 应用程序,该应用程序通过 Webclient downloadfileasync 从约 380 个站点采样数据。为每个站点创建一个单独的线程! (每次下载都会等待一段超时时间,然后再下载下一个数据 - 因此负载不是恒定的......但仍然如此!)无论如何,随着网站数量在未来一年左右的时间里将增加(可能会急剧增加),我想将其更改为一些(合理数量)工作线程,这些线程为站点的子集发出一堆 Webclient downloadfileasync 调用。但我不确定如果多个下载同时完成会发生什么 - downloadfilecompleted 事件处理程序是否会被 webclient 序列化?或者多个 Web 客户端完成是否可以“同时”发生(或更可能是交错发生)?我是否会面临一项完成任务破坏另一项完成任务的风险?或者有人对如何管理当前实现中的线程爆炸有更好的建议吗?

提前致谢。

最佳答案

预计可能会同时引发多个完成事件 - 但除非有一些您没有仔细处理的共享状态,否则应该没问题。结果不应该“损坏” - 如果损坏,那肯定是 .NET 中的一个错误。

请注意,如果您使用异步调用,您可能不需要工作线程 - 异步执行操作的全部要点是您发出调用,然后阻止线程,因此可以从 UI 线程(或其他线程)执行此操作。

如果您能够使用前沿技术,C# 5/.NET 4.5(处于候选 Release模式)中的异步/等待功能可以让您的生活变得更加轻松。

关于时间:2019-03-17 标签:c#asyncwebclient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089095/

相关文章:

c# - 我如何在 Web 应用程序中使用配置文件

c# - C#中将值类型装箱到引用类型需要多少内存?

asynchronous - MeteorwrappAsync没有方法 'apply'

c# - WebClient 不会自动重定向

c# - DownloadFileAsync 抛出未处理的异常?

c# - 包含数组所有字符串的字段

javascript - 为什么同步 sleep 功能不会因为在 promise 中而变得异步?

javascript - 返回 promise 的函数未按预期工作

c# - 在 HTTP CONNECT over SSL 期间设置用户代理 header ?

c# 添加带有 dataGridViewComboBoxCell 的 dgv 行