Возможно, это сложный вопрос, но это меня беспокоит. И не кричите, если это дубликат, я попытался выполнить поиск, но есть много вопросов относительно использования, что мне было трудно найти ответ.Использование - что происходит с моим потоком?
Я код, как это:
using (IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication())
using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("example.txt", FileMode.Create, ISF)))
writeFile.WriteLine("Example");
И мои вопросы: Что происходит с моим создал IsolatedStorageFileStream
, когда StreamWriter
расположена, оставив при этом использовать? Будет ли он также удален?
Есть ли разница по сравнению с этим кодом:
using (IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream stream = ISF.CreateFile("example.txt"))
using (StreamWriter writeFile = new StreamWriter(stream))
writeFile.WriteLine("Example");
Спасибо заранее.
@AdamHouldsworth Сам 'StreamWriter' вызывает' Dispose' в базовом потоке, который в свою очередь вызывает 'Close' в потоке. Так что да, если реализация базового потока переопределяет 'Close' для _not_ фактически закрывает поток, это не сработает, но это будет реализация _silly_, поэтому IMHO не стоит принимать во внимание в документации. – ken2k
@AdamHouldsworth, ken2k (Adam - я не уверен, почему вы удалили ответ) Да, я вижу оба ответа, и они оба правильны в соответствии с вопросом (теперь есть проблема, что у меня есть только один тик: | и не более голосов). Подводя итог, если я пишу свой собственный IDisposable и не обрабатываю Dispose правильно, мой созданный поток может выжить, если он не будет собран GC? – Romasz
@Romasz GC и Dispose - это две разные вещи. GC в конечном итоге очищает экземпляры, которые больше не упоминаются в вашем коде; Dispose - это ручной вызов, который используется для немедленного освобождения (неуправляемых) ресурсов. Что вы подразумеваете под «моим собственным IDisposable»? – ken2k