我正在编写一个同时运行多个线程的应用程序.
每个线程与Web服务器通信并下载不同数量的数据.
我想显示应用程序中所有线程的总进度.
每个线程与Web服务器通信并下载不同数量的数据.
我想显示应用程序中所有线程的总进度.
每个线程每下载1兆字节就会引发一个事件:
RaiseEvent My_Event(Size_Downloaded as double,Total_Size as double)
有没有办法显示主窗体中下载的总数而不会出现跨线程错误?
它不一定是瞬间的,所以计时器可能有效吗?
解决方法
您可以更改事件签名并添加线程的ID
并使用计时器显示节目总数
并使用计时器显示节目总数
Dim _info As New ConcurrentDictionary(Of Integer,DLoadInfo) Sub MyEvent(id As Long,Size_Downloaded As Double,Total_Size As Double) Dim v = New DLoadInfo() With { .SizeDownloaded = Size_Downloaded,.TotalSize = Total_Size } _info.AddOrUpdate(id,v,Function(key,oldValue) Return v End Function ) End Sub Private Sub TimerDisplay_Tick(sender As Object,e As EventArgs) Dim sizeDownloaded,totalSize As double For Each o As DLoadInfo In _info.Values sizeDownloaded += o.SizeDownloaded totalSize += o.TotalSize Next TextBoxSizeDownloaded.Text = sizeDownloaded TextBoxTotalSize.Text = totalSize End Sub Class DLoadInfo Public property SizeDownloaded As Double Public property TotalSize As Double End Class
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。