Musnazril Ответов: 2

Главная VB.NET форма перестает отвечать при запуске второй формы.


привет, у меня есть проект, состоящий из 2-х форм, основной формы и расчетной формы. форма расчета содержит таймер, который будет автоматически выполнять некоторые вычисления каждые 15 секунд, где само вычисление займет 5 секунд, чтобы быть завершенным.

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

теперь это не связано с мощностью процессора и т. д., Вся программа потребляет только 3% моего ресурса во время операций.

Что я уже пробовал:

is there a way to make both form to run without has to wait other form complete its task.

program is written in vb.net (visual studio 2019) on windows 10.

2 Ответов

Рейтинг:
2

OriginalGriff

Это сделано специально. Ваше приложение имеет один поток пользовательского интерфейса, который обрабатывает обновления для всех форм в приложении. Если какая-либо часть вашего кода начинает делать что-то, что занимает много времени, никакие формы не будут обновляться, пока она не прекратит это делать.

Вам не нужно использовать вторую форму (если вы этого не хотите), но вам нужно использовать второй поток. Я бы настоятельно посоветовал вам попробовать BackgroundWorker[^] который довольно легко настроить, а также содержит отчеты о ходе работы (что может стать громоздким с прямым потоком). Переместите весь свой длинный код runnign в него, и ваш пользовательский интерфейс будет продолжать нормально реагировать.


Maciej Los

5!

Рейтинг:
1

Maciej Los

Кажется, вам нужно открыть вторую форму в другой задаче (потоке). Видеть: Использование потоков и многопоточности | Microsoft Docs[^]

Вот очень интересная статья о КП: Многопоточность с помощью VB.NET - выбор новичка[^]