vb.net – 被触发的异步事件
发布时间:2020-12-17 07:23:17 所属栏目:百科 来源:网络整理
导读:我正在编写一个同时运行多个线程的应用程序. 每个线程与Web服务器通信并下载不同数量的数据. 我想显示应用程序中所有线程的总进度. 每个线程每下载1兆字节就会引发一个事件: RaiseEvent My_Event(Size_Downloaded as double,Total_Size as double) 有没有办
我正在编写一个同时运行多个线程的应用程序.
每个线程与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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |