В vb.net у меня есть приложение winforms, которое периодически запускает форму для проверки нескольких операций в другом потоке основного потока. Я хотел бы показать эти формы «модальным» способом, поэтому поток доступа к основной форме должен быть заблокирован.Показать форму в качестве модальной в новой теме
Возможно ли это?
Есть ли другой способ запустить форму в новом потоке без использования Application.Run (new Form()) ...?
Код выглядит следующим образом:
Imports System
Imports System.Windows.Forms
Friend NotInheritable Class Program
Private Sub New()
End Sub
<STAThread() _
Shared Sub Main()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
threadFormCheckOperations.Start()
Application.Run(New FormMain())
End Sub
Public Shared threadFormCheckOperations As New Thread(AddressOf launchThreadFrmCheckOperations)
Public Shared Sub launchThreadFrmCheckOperations()
While(True)
Dim threadForm As New Thread(AddressOf launchFrmCheckOperations)
threadForm.Start()
threadForm.Join() '---> Wait until thread is closed
Thread.Sleep(60000)
End While
End Sub
Public Shared Sub launchFrmCheckOperations()
'I guess, here is where the code have to change… or is in the FormCheckOperations properties?
Application.Run(New FormCheckOperations()
End Sub
End Class
Спасибо за объяснения, но это не решает мою проблему, так как, если я открываю форму методом '.Show()', она автоматически закрывается. Использование свойства '.TopMost' может быть решением, неудобные всплывающие окна (например: messagebox) в дополнительной форме не могут быть показаны, поскольку дополнительная форма всегда была бы в верхней части .... Но решение кажется ближе. – mzurita
Я думаю, что в вашем приложении есть какое-то заблуждение ... Я предполагаю, что в классе окон есть какая-то логика, которая выполняется, когда вы показываете окно? Возможно, было бы целесообразно разделить логику и пользовательский интерфейс и показать одно модальное окно, которое показывается, прежде чем начнется какой-либо рабочий поток ... каждый поток может показывать данные в модальном окне (для этого требуется определенная синхронизация, но, вероятно, приводят к более чистым и более стабильным приложениям). – Matze