Witam. Pisząc od nowa serwer komunikatora, na starcie spotkałem się z czymś takim:
- wywołuję
Thread.CurrentThread.Abort()
, co powoduje zamknięcie aplikacji (konsola) - wywołuje się destruktor mojego obiektu
- zamykam połączenie z bazą i właśnie tutaj zapisuję do log'a to co trzeba
- no i młotek z gwoździami,
Cannot access a closed file.
:(
Po tej instrukcji właśnie miał zostać zamknięty log przeze mnie. Niestety program nie zdąży nawet do tego dojść.
Czy jest tak, że w chwili wychodzenia z programu, a tu niszczenia mojego obiektu, wszystkie uchwyty zew. zostają zwolnione? Czy może coś nie tak naklepałem? Pomóżcie.
Dodam, że strumień pliku leży sobie w statycznej klasie i jest niezależny od głównej klasy, tzn. najpierw jest inicjalizacja log'a, potem zapisywanie i zamknięcie z klasy głównej, ale do tego zamknięcia nie dochodzi, bo poprzedza go zapis ostatniej linijki do log'a i występuje wyjątek :/ Kod:
class XMServer
{
public XMServer()
{
Log.Initialize(); // otwarcie pliku
// ...
// zamknięcie w razie błędów
}
~XMServer()
{
db.Close(); // w tej metodzie jest odpowiedni zapis do log'a, w jej wnętrzu dostaję wyjątek przy metodzie StreamWriter.Write(...);
Log.Close(); // zamknięcie log'a
}
}