Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C#, Excel, uvolňování/zavírání/ukončování souboru

Ahoj, potřeboval bych poradit (vysvětlit) s uzavíráním a ukončováním Excelovského souboru programově vygenerovaného přes C#.
Jde mi o následující: uživateli program vygeneruje/zapíše do dokumentu určité statistiky a nyní dá uživateli na výběr, jestli chce soubor buď uložit na zadané místo nebo zobrazit.
Když zvolí uložení, vyskočí dialog, zadá cestu a jméno a soubor a OK a např. na ploše vznikne soubor statistiky.xls.
Když zvolí zobrazení, rovnou se spustí Excel a uživatel statistiky přímo vidí a už je na něm, co s otevřeným souborem bude dělat.
Teď ale nevím, jak po sobě "správně" uklidit, aby nezůstalo něco otevřené.
Četl jsem v několika článcích, že by se mělo uklidit následovně: Marshal.ReleaseComObject(object);
V parametru je vždy list v souboru, do kterého se zapisovalo nebo workbook, do kterého se zapisovaly listy nebo aplikace, ve které se otevřel workbook.
Co toto uvolnění vůbec znamená?
A jak udělám Marshal.ReleaseComObject(application); v případě zobrazování statistik na obrazovku? Když je Excel stále otevřený, asi to nemůžu zavolat, ne?

Když se statistiky neukládají, ale zobrazují, ukončuji následovně:

workbook = excel.CreateStatsFile();
application.Visible = true;
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(application);
Když se soubor ukládá na zadané místo:
application.Visible = false;
workbook = excel.CreateStatsFile();
workbook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workbook.Close();
application.Quit();
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(application);
Je toto v obou případech správně řešení? Nejspíš není, protože když vyzkouším obě možnosti, zůstane mi ve správci úloh, že Excel je 2x (někdy? 3x) otevřený. Na liště nic nemám, takže je někde něco špatně ukončené.

Díky za pomoc.

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny