Pregunta

Me estoy quedando Excel desde una aplicación C # .Net y tener problemas para conseguir el proceso de cerrar. ¿Cómo puedo conseguir el proceso de Excel para apagar correctamente desde mi programa en C #?

¿Fue útil?

Solución

Prueba esto:

foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
        {
            if (process.MainModule.ModuleName.ToUpper().Equals("EXCEL.EXE"))
            {
                process.Kill();
                break;
            }
        }

Otros consejos

Estoy cerca de 99% seguro de que su problema es causado por colgando referencias COM que impiden el proceso de Excel se apague. Excel es particularmente propensa a esto, ya que tiende a generar de forma transparente referencias COM sin darle los medios para llegar a sus mangos y cerrar de forma explícita hacia abajo.

Las evaluaciones preliminares de agravar este problema haciendo su propio conjunto de referencias a los objetos COM subyacentes que no limpian a menos que explícitamente hace que lo hagan. Trabajar con Excel a través de los PIA es bastante incómoda precisamente por esta razón.

Application.Quit() (IIRC esto es lo que se llama) Apagar el proceso si las referencias son limpiados correctamente. Esto significa que usted tiene que manejar con cuidado el ciclo de vida de cualquier cosa que tiene referencias COM para el proceso de Excel y asegúrese de que todas las referencias COM se limpian adecuadamente.

Application app = new Application();
...
EndTask((IntPtr)app.Hwnd, true, true);

[DllImport("user32.dll")]
public static extern bool EndTask(IntPtr hwnd, bool shutdown, bool force);

En función de sus necesidades, usted podría considerar el uso de SpreadsheetGear para .NET que le da un componente compatible con Excel sin interoperabilidad COM (no hay casos de suspensión, un mejor rendimiento, no tiene que preocuparse de si Excel está instalado o la versión de Excel está instalado).

Puede ver muestras de ASP.NET en vivo con C # y VB fuente aquí , aprende más información sobre los controles de formularios Windows SpreadsheetGear y muestras aquí , y descargar una versión de prueba < a href = "https://www.spreadsheetgear.com/downloads/register.aspx" rel = "nofollow noreferrer"> aquí si desea hacerlo por uno mismo.

exención de responsabilidad: Tengo SpreadsheetGear LLC

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top