«Арифметическая операция вызвала переполнение» в Me.Invoke с многопоточностью - PullRequest
0 голосов
/ 19 марта 2010

У меня есть этот сценарий:

    Private Sub WebDL_AmountDownloadedChanged(ByVal iNewProgress As Long) Handles WebDL.AmountDownloadedChanged
    'On Error Resume Next
    If downloading Then
        Dim wbchanged As New WDL_AmountDownloadedChanged(AddressOf WebDLAmountChanged)
        Me.Invoke(wbchanged, New Object() {CLng(iNewProgress)})
    End If
End Sub

Во время выполнения подпрограмма получает в iNewProgress это значение:, что приводит к переполнению:

System.OverflowException is nothandled Message = "Арифметическая операцияпривело к переполнению. "Source = "System.Windows.Forms" StackTrace: в System.Windows.Forms.Control.MarshaledInvoke (вызывающий элемент управления, метод Delegate, аргументы Object [], логический синхронный) в System.Windows.Forms.Control.Invoke (метод Delegate,Object [] args)

1 Ответ

1 голос
/ 19 марта 2010

Вы не опубликовали код для своего метода WebDLAmountChanged. Но сообщение об ошибке говорит, что его аргумент должен был быть объявлен как длинный, но это не так. Исправлено:

Private Sub WebDLAmountChanged(ByVal progress As Long)
  ' etc...
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...