none
Eliminare un processo attivo RRS feed

  • Domanda

  • Buongiorno,...ennesimo problema.
    All'apertura di una form, chiamata da un menù, apro un processo di Excel così:  
    Imports Excel = Microsoft.Office.Interop.Excel

    ed in seguito dichiaro la variabile così: 
    ReadOnly APP As New Excel.Application

    questo codice fa si che il sistema apra un processo in background...

    alla chiusura della form, nell'evento form.Closing richiamo la sub di chiusura di Excel così:   
       APP.Quit()

       Dispose()
    e mi aspetto che il processo in background venga eliminato alla chiusura della form invece ogni volta che la apro mi apre un processo nuovo, e vengono eliminati SOLO alla chiusura dell'applicazione principale.

    Domanda:  Cosa sbaglio o ometto?




    • Modificato NewContex sabato 18 aprile 2020 13:06
    sabato 18 aprile 2020 11:02

Risposte

  • Ho risolto eliminando manualmente il processo all'uscita di  ogni form che chiamano Excel:

     Public Sub KillProc()
            Dim processes() As Process = Process.GetProcesses()
            ' Loop over processes.
            For Each p As Process In processes

                ' Display process properties.
                If p.ProcessName = "EXCEL" Then
                    p.Kill()
                End If
            Next
        End Sub

    • Contrassegnato come risposta NewContex lunedì 20 aprile 2020 11:37
    lunedì 20 aprile 2020 11:37
  • Ciao NewContex, ho controllato le mie app che lavorano con excel ed ho riscontrato lo stesso tuo problema, però la tua soluzione chiude anche eventuali istanze di excel indipendenti dalla tua applicazione, quindi non mi sembra una soluzione corretta. Suggerisco questa modifica

      If p.ProcessName = "EXCEL" And p.MainWindowTitle.Length = 0 Then

    • Modificato patel45 lunedì 20 aprile 2020 14:15
    • Contrassegnato come risposta NewContex martedì 21 aprile 2020 08:34
    lunedì 20 aprile 2020 14:02
  • Non ha specificato il processo Excel, visto che non e parte del programma, ma esterno. Specifica il processo Excell. e vedra che verra chiuso. 

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    sabato 18 aprile 2020 13:07
    Moderatore

Tutte le risposte

  • Non ha specificato il processo Excel, visto che non e parte del programma, ma esterno. Specifica il processo Excell. e vedra che verra chiuso. 

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    sabato 18 aprile 2020 13:07
    Moderatore
  • Buongiorno Yordan, cosa intende per
    "Non ha specificato il processo Excel, visto che non e parte del programma, ma esterno", ?

    Le dichiarazioni sono tutte definite all'apertura della Form...

        Dim APP As New Excel.Application
        Dim worksheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim workbook As Microsoft.Office.Interop.Excel.Workbook

    e in una sub chiamata:

        workbook = APP.Workbooks.Open(FileExcel)
        worksheet = workbook.Worksheets(mSheet)

    sabato 18 aprile 2020 13:27
  • Ho risolto eliminando manualmente il processo all'uscita di  ogni form che chiamano Excel:

     Public Sub KillProc()
            Dim processes() As Process = Process.GetProcesses()
            ' Loop over processes.
            For Each p As Process In processes

                ' Display process properties.
                If p.ProcessName = "EXCEL" Then
                    p.Kill()
                End If
            Next
        End Sub

    • Contrassegnato come risposta NewContex lunedì 20 aprile 2020 11:37
    lunedì 20 aprile 2020 11:37
  • Ciao NewContex, ho controllato le mie app che lavorano con excel ed ho riscontrato lo stesso tuo problema, però la tua soluzione chiude anche eventuali istanze di excel indipendenti dalla tua applicazione, quindi non mi sembra una soluzione corretta. Suggerisco questa modifica

      If p.ProcessName = "EXCEL" And p.MainWindowTitle.Length = 0 Then

    • Modificato patel45 lunedì 20 aprile 2020 14:15
    • Contrassegnato come risposta NewContex martedì 21 aprile 2020 08:34
    lunedì 20 aprile 2020 14:02
  • Hai ragione patel45...così è molto migliore in quanto eventuali file di excel aperti indipendentemente dal programma non vengono chiuse.

    martedì 21 aprile 2020 08:34