Cómo detener un proceso de cálculo de Excel que empecé desde una aplicación C # .Net?
-
22-09-2019 - |
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 #?
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