Jump to content
cmd

Erro ao fazer Application.Exit

Recommended Posts

cmd

Boas a todos,

Tenho uma pequena aplicação que quando vai a sair usado o Application.Exit dá-me este erro:

A colecção foi modificada; a operação de enumeração poderá não ser executada.

Como é que poderei corrigir? :S


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Não estás a correr um for each por ai?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Nop, dá-me este erro quando tenho uma determinada form aberta que tem uma GridView que recolhe dados da BD


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

E nessa form não tens a correr nada no evento FormClosing ou FormClosed?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Tenho, isto:

My.Settings.forms = My.Settings.forms - 1
        If My.Settings.forms = 0 Then
            frm_inicio.Panel1.Visible = True
        End If
        My.Settings.Save()
        Me.Dispose()

Serve para verificar se existe alguma form aberta porque estou a utilizar MDI e um panel que cada vez que abre uma form incrementa o My.Settings.forms e se o My.settings.forms for mais do que 0 o panel está sempre escondido


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Só isso? Estranho... 🤔


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Sim, nesse evento é só isso que tenho, tenho mais código noutros eventos, poderá influenciar?


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Penso que não. No evento Shutdown da aplicação não tens nada?

Isso é estranho... Está a trabalhar com Threads?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Nop, nada de threads, no evento da form principal tenho isto:

Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click, btn_sair.Click
        If MsgBox("Confirmar a saída do programa?", MsgBoxStyle.YesNo, "Confirmar saída") = MsgBoxResult.Yes Then
            Try
                'verificar se é para sair
                logout = False
                sair = True

                'sair do programa
                Application.Exit()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End If
    End Sub

    Private Sub frm_inicio_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        teste = True
        'verificar se é para sair ou para fechar para a tray
        If Not sair And My.Settings.tray Then
            e.Cancel = True
            My.Settings.Save()
            Me.WindowState = FormWindowState.Minimized
            Me.Visible = False
            If My.Settings.aviso_tray And Not logout Then
                MedGest.funcoes.Show("MedGest", "O programa foi minimizado para a barra de tarefas.", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
            Exit Sub
        End If
        'verificar se é para fazer logout
        If Not logout And sair Then
            My.Settings.doente_x = btn_doentes.Location.X
            My.Settings.doente_y = btn_doentes.Location.Y
            My.Settings.sair_x = btn_sair.Location.X
            My.Settings.sair_y = btn_sair.Location.Y
            My.Settings.admin_x = btn_admin.Location.X
            My.Settings.admin_y = btn_admin.Location.Y
            My.Settings.meds_x = btn_meds.Location.X
            My.Settings.meds_y = btn_meds.Location.Y
            My.Settings.user_x = btn_user.Location.X
            My.Settings.user_y = btn_user.Location.Y
            My.Settings.forms = 0
            My.Settings.Save()
            NIcon.Visible = False
            'matar a thread e sair da aplicação
            Application.Exit()
        End If
    End Sub


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Não sei se tem a haver com o save, já que ele faz isso por defeito quando sai da aplicação.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Troca isto

            Try
                'verificar se é para sair
                logout = False
                sair = True

                'sair do programa
                Application.Exit()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

por isto

            Try
                'verificar se é para sair
                logout = False
                sair = True

                'sair do programa
                Me.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

É suficiente para disparar o evento FormClosing.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
cmd

Troca isto

            Try
                'verificar se é para sair
                logout = False
                sair = True

                'sair do programa
                Application.Exit()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

por isto

            Try
                'verificar se é para sair
                logout = False
                sair = True

                'sair do programa
                Me.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

É suficiente para disparar o evento FormClosing.

Parece que agora ficou a funcionar, não tinha pensado com essa lógica, muito obrigado Caça


Cumps.cmd

Share this post


Link to post
Share on other sites
Caça

Estavas a executar duas vezes a linha

Application.Exit()


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.