У меня есть одно приложение формы Windows, которое запускается на значке в системном трее. Если пользователь нажимает кнопку X на форме окна, отображается окно сообщения с Да и Нет (Да -> закрыть форму --- Нет-> сохранитьформа работает в значок в системном трее).Я думал предотвратить сценарий, когда пользователь открывает другой экземпляр приложения, когда уже запущен экземпляр, поэтому я использовал этот код:
If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length> 1 Then
MessageBox.Show("Another instance is running", "Error Window", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
Application.Exit()
End If
Проблема заключается в том, что когда я хочу проверить это,сообщение отображается, но после того, как я нажимаю ок, появляется новое окно сообщения (это из Private Sub Form_FormClosing). Если я выберу НЕТ, мне придется запустить экземпляр!Я прочитал, что Application.Exit запускает событие Form_FormClosing.
Есть ли возможность отменить запуск события Form_FormClosing, или я что-то не так делаю?
'это процедура закрытия формы
Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
Dim response As MsgBoxResult
response = MsgBox("Are you sure you want to exit", CType(MsgBoxStyle.Question + MsgBoxStyle.YesNo, MsgBoxStyle), "Confirm")
'If the user press Yes the application wil close
'because the application remains in taskmanager after closing i decide to kill the current process
If response = MsgBoxResult.Yes Then
Process.GetCurrentProcess().Kill()
ElseIf response = MsgBoxResult.No Then
e.Cancel = True
Me.WindowState = FormWindowState.Minimized
Me.Hide()
NotifyIcon1.Visible = True
End If
PS: я не программист, поэтому, пожалуйста, не будьте со мной резкими:)