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

Volanie sheet.Cells[row, column] vráti COM objekt typu Range, ktorý treba tiež uvoľniť.

Na prácu s COM objektami mám napísaný takú pomocnú wrapper triedu, s ktorou sa pracuje takýmto spôsobom:

using (var application = new ComObject("Excel.Application"))
using (var workbooks = application.GetComProperty("Workbooks"))
using (var workbook = workbooks.InvokeComMethod("Open", ...))
using (var sheets = workbook.GetComProperty("Sheets"))
using (var sheet = sheets.GetComProperty("Item", sheetName))
{
  ...
}
Na tvojom mieste by som si na to napísal tiež takú helper triedu. Ja som používal late binding. Ak chceš používať early binding, tak tvoja helper trieda bude vyzerať trochu inak, ale princíp zostane rovnaký.

FinalReleaseComObject spraví v podstate to, že volá dokola ReleaseComObject, až pokým sa neuvoľnia všetky referencie. Osobne by som používal iba ten ReleaseComObject, pretože ak pracuješ s tým objektom ešte niekde inde, tak by si ho takto mohol omylom predčasne uvoľniť.

Reakce na odpověď

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

Zpět do poradny