2015-03-25 1 views
2

У меня проблема, моя программа (при запуске процесса) сведена к минимуму в системный трей, а когда процесс закончился, он отображается в нормальном состоянии, но не работает с мое решение, я получаю сообщение об ошибке:Процесс проверки vb.net завершен и изменен UI

необработанное исключение типа 'System.InvalidOperationException' произошло в System.Windows.Forms.dll

Мой код:

Dim p as new Process 
p.filename = "somefile.exe" 
p.workingdirectory = "somepath" 
p.EnableRaisingEvents = True 
AddHandler p.Exited, AddressOf Main.Main_Process_Closed 
p.Start() 

Обработчик в основной форме:

Public Sub Main_Process_Closed(ByVal sender As Object, ByVal e As System.EventArgs) 
     Me.Visible = True 
     Me.WindowState = FormWindowState.Normal 
     NotifyIcon1.Visible = False 
    End Sub 

В чем проблема? Спасибо за помощь.

ответ

1

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

Вам нужно будет использовать Invoke для правильного маршалирования потока пользовательского интерфейса. Вот отличный MSDN article, который должен пройти через него.

Смежные вопросы