Пользователь должен видеть несколько открытых аккаунтов одновременно, верно? Итак, вам нужно несколько экземпляров формы?
Если я не читаю что-то неправильно, я не думаю, что вам нужны потоки для этого сценария, и я думаю, что вы просто представляете себя в результате обиды (как эти исключения).
Предполагая, что форма вашей учетной записи называется AccountForm, я бы сделал это вместо:
Dim acctForm As New AccountForm()
acctForm.Show()
(Конечно, у вас будет своя логика для этого ...) Я мог бы даже поместить ее в метод ShowForm
, чтобы я мог просто таким образом обновить своего вызывающего:
ShowForm()
И все будет сделано. Теперь все это предполагает, что вы аккуратно инкапсулировали AccountForm, чтобы у каждого экземпляра были свои данные, и они ничего не делили между экземплярами.
Использование потоков для этого не только излишне, но и может привести к ошибкам, таким как исключение вверху. И мой опыт отладки многопоточных приложений WinForms показал, что эти ошибки часто очень трудно воспроизвести, и их чрезвычайно сложно найти и исправить. Часто лучшее решение состоит в том, чтобы не использовать многопоточность, если у вас нет абсолютно положительного .