Форма в отдельном потоке мигает и исчезает, а должна висеть - Visual Basic .NET
Формулировка задачи:
Доброго времени.
Думал, с потоками за пару лет разобрался, и сюрпризов больше не будет, но вот непонятная вещь, и я не понимаю. что делаю не так.
Форма question1 должна появиться и висеть, а она мигает на долю секунды и исчезает.
Программа должна последовательно для каждого файла из списка открыть файл в excel, вывести форму question1, после нажатия кнопки на question1 - обработать файл. И по новой.
код:
Код формы question1:
Листинг программы
- Public Sub Main(ByVal files As String())
- Excel = CreateObject("Excel.Application")
- For k = 0 To files.Length - 1
- WorkBook = Excel.Workbooks.Open(files(k)) 'открывается
- ExSheet = WorkBook.ActiveSheet
- Excel.Visible = True ' показывает
- trd1 = New Thread(AddressOf question_f)
- trd1.Start() ' стартует
- Do Until question1.Visible = True 'если поставить тут точку остановки, понятно что основной поток зацикливается тут
- Thread.Sleep(1000)
- Loop
- Next
- End Sub
- Sub question_f()
- question1.Visible = True
- question1.Show() 'показывает, но тут же исчезает
- End Sub 'может дело в том, что завершается этот раздел, и поток "обнуляется"?
Листинг программы
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ReadExcel.obr() 'обработка, до нее, естественно, не доходит
- End Sub
- Private Sub question1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Me.Visible = True
- Me.TopMost = True
- End Sub
Решение задачи: «Форма в отдельном потоке мигает и исчезает, а должна висеть»
textual
Листинг программы
- Sub question_f()
- 'Form2.Visible = True
- Form2.ShowDialog() 'показывает, но тут же исчезает
- End Sub 'может дело в том, что завершается этот раздел, и поток "обнуляется"?
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д