2012-04-01 3 views
1

Warum verursacht dies ein Auftreten von Excel zu öffnen?Warum führt OpenFiledialog dazu, dass Excel Task-Manager-Prozessen hinzugefügt wird?

 OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
     DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. 
     if (result == DialogResult.OK) // Test result. 
     { 
      //EXCEL.EXE *32 is now showing in the task manager! 

Ich wähle eine XLSX Datei aus dem openfiledialog und wie oben gezeigt, i den Prozess im Task-Manager sehe.

kann mir bitte jemand sagen, wie ist das möglich?

+0

Wenn alles andere fehlschlägt, single-step durch den Code! Es sollte schnell zeigen, welche Zeile das Problem verursacht. Darüber hinaus müssen alle von Excel zurückgegebenen Objekte auch über ReleaseComObject freigegeben werden, z. xlWorkBook, xlWorkSheet, xlWorkSheet.get_Range, EmailList.Cells. Miss eins Excel bleibt offen. – Will

+0

ps. Nebenbei sollte Ihr Bereinigungscode in einem finally-Block sein, um sicherzustellen, dass er unabhängig von Erfolg oder Ausnahme aufgerufen wird. – Will

+0

vielen dank. Können Sie bitte bearbeitete Frage sehen, ich denke, ich fand den Grund, warum –

Antwort

1

Wenn Excel bereits geöffnet ist, sollten Sie versuchen, diese Instanz zu erhalten, anstatt eine neue zu erstellen.

using System.Runtime.InteropServices; 

... 

Excel.Application xl = null; 
try { 
    // Try to get an existing instance 
    xl = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
} catch (COMException ex) { 
    // Excel was not open. Open a new instance 
    xl = new Excel.ApplicationClass(); 
} 
+0

Vielen Dank für Ihre Hilfe. Meine Anwendung öffnet Excel und es sollte es schließen. Was meinst du mit "Excel bereits geöffnet?" –

+0

????????????????/ –

+0

Möglicherweise ist bereits eine Excel-Anwendung geöffnet - entweder sichtbar oder nicht sichtbar. Im letzteren Fall würden Sie es im Aufgabenmanager sehen. –

Verwandte Themen