Jezu, czemu chcesz wywołać manualnie Dispose() wewnątrz bloku using? I jak myślisz, co się stanie, jeśli nakażesz frameworkowi zwolnić wszelkie referencje etc. przed wywołaniem jakiejś innej metody na zwalnianym obiekcie?
Z innych pytań, co to za wersja frameworka i czy metoda Read() przyjmuje enuma określającego, w jakim celu otwierasz zipa (read, update etc.) To też ma znaczenie.
@TymRazemNieBedeBordo: skoro uzywasz bloku using() to znaczy, ze obiekt ten implementuje IDisposable i Dispose() zostanie wywolane przez framework, manualne wywolanie IDisposable nie ma tutaj w ogole zadnego sensu i nie powinno sie tak robic. Przylaczam sie do kolegi wyzej odnosnie sprawdzenia dodatkowych parametrow przy otwarciu pliku.
Jezu, czemu chcesz wywołać manualnie Dispose() wewnątrz bloku using? I jak myślisz, co się stanie, jeśli nakażesz frameworkowi zwolnić wszelkie referencje etc. przed wywołaniem jakiejś innej metody na zwalnianym obiekcie?
@Czesiowcy: zrobiłem to w akcie desperacji, by sprawdzić czy zwolni zasoby i wywali inny błąd gdy dojdzie do Save(). No i nie doszło. Z tego co rozumiem, powinien zwolnić plik przed tym i wywalić inny błąd, ale pewnie się mylę.
@TymRazemNieBedeBordo: A czy metoda Read() pozwala w ogóle na takie mutowanie zawartości archiwum? Nie znam tej biblioteki, ale pobieżna lektura doka mówi mi, że ReadOptions() nie jest ekwiwalentem zwyczajowych enumów w metodach do pracy na plikach bezpośrednio z frameworka .NET. Masz jakiś przykład, gdzie ta biblioteka pozwala na takie zmiany w otwartym pliku, czy robi się to poprzez stworzenie kopii z pożądanymi zmianami?
@TymRazemNieBedeBordo: Dispose(); dajesz tam, gdzie kończysz pracę z obiektem - nie możesz go dać przed Save();. using wywołuje metodę Dispose(); na końcu swojego kodu. Jeżeli nie użyjesz Dispose(); to obiekt dalej będzie trzymał otwarty plik.
Tzn. albo robisz z using, nie wywołujesz wtedy sam Dispose(); albo dajesz Dispose(); na końcu swojej metody AddToArchive(...);
Z innych pytań, co to za wersja frameworka i czy metoda Read() przyjmuje enuma określającego, w jakim celu otwierasz zipa (read, update etc.) To też ma znaczenie.
@Czesiowcy: zrobiłem to w akcie desperacji, by sprawdzić czy zwolni zasoby i wywali inny błąd gdy dojdzie do Save(). No i nie doszło. Z tego co rozumiem, powinien zwolnić plik przed tym i wywalić inny błąd, ale pewnie się mylę.
źródło: comment_fFowshIx4EKAiBCFZTktZkpmDDAE6BTE.jpg
PobierzOdpocznę chwilę, pomyślę jak to obejść, ostatecznie wywalę wszystko do tymczasowego folderu i spakuje na nowo.
źródło: comment_hhRk2xO511YDLyeAT4A8dNWbsHP4hY13.jpg
Pobierzźródło: comment_19iEFBYifXJZze6M8zzrfciVX85dgjkO.jpg
PobierzTzn. albo robisz z using, nie wywołujesz wtedy sam Dispose(); albo dajesz Dispose(); na końcu swojej metody AddToArchive(...);