Nano Hash - криптовалюты, майнинг, программирование

Необработанное исключение при использовании арифметических операторов VB

У меня есть функция, которая перебирает список серверов, а затем для каждого выполняет ряд функций.

В начале каждой итерации мне нужно рассчитать, на каком «шаге» находится процесс в данный момент (чтобы индикатор выполнения мог быть обновлен правильно), но эта строка вызывает ошибку:

Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1

Все три упомянутых свойства являются целыми числами, и их значения довольно низкие (т.е. CurrentServerLoop имеет максимум 6, а ServerSteps имеет максимум 20, поэтому CurrentStepLoop не может быть больше 101 из этого уравнения.

Вот ошибка, которую я получаю -

Произошло необработанное исключение типа «System.Reflection.TargetInvocationException» в mscorlib.dll
Дополнительная информация: цель вызова сгенерировала исключение.

Я нахожу особенно странным, что у меня есть рассматриваемая строка внутри Try...Catch, но ошибка не обрабатывается моим кодом, и вместо этого я вижу общую ошибку Visual Exchange. Строка на самом деле не выделена, но я знаю, что если я ее закомментирую, ошибка не возникает

Может ли кто-нибудь пролить свет на то, почему это может происходить? Спасибо.

Вот фрагмент кода, который, как мне кажется, вызывает проблему, а также ссылка на полный код:

For Each CurrentServer In Me.Servers

    If bw.CancellationPending = True Then
        e.Cancel = True
        Exit For
    Else

        Try
            Me.CurrentStepLoop = ((Me.CurrentServerLoop - 1) * Me.ServerSteps) + 1
        Catch Ex As Exception
            Dim ErrorForm As New formError(Ex)
            e.Cancel = True
            Exit For
        End Try

        MappingResult = Me.DoMapDrives(CurrentServer)
        If Not MappingResult Then bw.CancelAsync() : Exit For

        {...Other actions here...}

        CurrentServerLoop += 1

    End If

Next
08.01.2014

  • Вы можете добавить в свой код обработчик необработанного исключения. Например, добавьте AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf HandleUnhandledExceptionEvent к методу загрузки формы (или эквивалентной точки входа), а затем запросите исключение в этом обработчике исключений, чтобы получить больше информации о том, что происходит. Дурацкий, правда. 08.01.2014
  • Эта ошибка вызвана не типом, а заданными переменными и тем, как вы к ним обращаетесь. Пожалуйста, включите код, в котором объявлены все переменные, и дополнительные проблемы, о которых следует знать (например, использование нескольких потоков). 08.01.2014
  • @varocarbas - на данном этапе я не буду включать весь код (он довольно большой), но могу сказать вам, что пример в вопросе взят из функции bw_DoWork(), и поэтому приведенные выше вызовы происходят в BackgroundWorker. Кроме того, BackgroundWorker выполняется в форме, и рассматриваемые свойства объявляются в этой форме. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация... 08.01.2014
  • Является ли CurrentStepLoop переменной или свойством? Если это свойство, делает ли установщик что-нибудь еще, например. поднять событие? Тот же вопрос для геттеров CurrentServerLoop´ and ServerSteps`. 08.01.2014
  • @Nico Schertler - все это свойства, и геттеры / сеттеры ничего не делают, кроме установки значений. Спасибо. 08.01.2014
  • Установить значения где? В переменных? В свойствах элементов управления? 08.01.2014
  • Я новичок в .NET, и я не на 100% понимаю, что вы имеете в виду под всем вышеперечисленным. Я поместил полный код формы, в которой возникает ошибка, в Pastebin, и я благодарен, если вы могли бы взглянуть. Спасибо. 08.01.2014

Ответы:


1

Я нашел ошибку и почему она возникла.

В методе SetSteps() я вычисляю Me.StepSize, но делал это неправильно. Изменение этого -

Me.StepSize = Me.proProgress.Maximum / Me.ServerSteps

Для этого решил проблему -

Me.StepSize = Me.proProgress.Maximum / Me.TotalSteps

Проблема заключалась в том, что индикатор выполнения устанавливался выше своего максимума, что вызывало ошибку. Спасибо.

08.01.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..