VB.NET中如何处理被触发的异步事件?

2026-04-29 07:282阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计316个文字,预计阅读时间需要2分钟。

VB.NET中如何处理被触发的异步事件?

我正在编写一个同时运行多个线程的应用程序。每个线程与Web服务器通信并下载不同数量的数据。我想显示应用程序中所有线程的总进度。每当每个线程下载1个字符时,就会触发一个事件:R。

我正在编写一个同时运行多个线程的应用程序.
每个线程与Web服务器通信并下载不同数量的数据.
我想显示应用程序中所有线程的总进度.

每个线程每下载1兆字节就会引发一个事件:

RaiseEvent My_Event(Size_Downloaded as double,Total_Size as double)

有没有办法显示主窗体中下载的总数而不会出现跨线程错误?

它不一定是瞬间的,所以计时器可能有效吗?

您可以更改事件签名并添加线程的ID
并使用计时器显示节目总数

VB.NET中如何处理被触发的异步事件?

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

本文共计316个文字,预计阅读时间需要2分钟。

VB.NET中如何处理被触发的异步事件?

我正在编写一个同时运行多个线程的应用程序。每个线程与Web服务器通信并下载不同数量的数据。我想显示应用程序中所有线程的总进度。每当每个线程下载1个字符时,就会触发一个事件:R。

我正在编写一个同时运行多个线程的应用程序.
每个线程与Web服务器通信并下载不同数量的数据.
我想显示应用程序中所有线程的总进度.

每个线程每下载1兆字节就会引发一个事件:

RaiseEvent My_Event(Size_Downloaded as double,Total_Size as double)

有没有办法显示主窗体中下载的总数而不会出现跨线程错误?

它不一定是瞬间的,所以计时器可能有效吗?

您可以更改事件签名并添加线程的ID
并使用计时器显示节目总数

VB.NET中如何处理被触发的异步事件?

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