Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet433/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   429   430   431   432   433   434   435   436   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

ПриМеЧание
Вручную.вызывать.метод.Dispose.для.объекта.FileStream.не.обязательно:.BinaryWriter.
сделает.это.сам .Если.же.этот.метод.все-таки.вызван.явно,.FileStream.обнаружит,.что.
очистка.объекта.уже.выполнена,.и.вызванный.метод.просто.вернет.управление 
Как вы думаете, что было бы, не будь кода, явно вызывающего метод 
Dispose

Уборщик мусора однажды правильно определил бы, что эти объекты стали мусо-
ром, и финализировал их. Но он не может гарантировать определенной очеред-
ности вызова методов финализации. Поэтому если объект 
FileStream
завершится 
первым, он закроет файл. Затем после финализации объекта 
StreamWriter
он 
попытается записать данные в закрытый файл, что вызовет исключение. В то же 
время, если 
StreamWriter
завершается первым, данные благополучно записыва-
ются в файл.
Как с этой проблемой справились в Microsoft? Заставить уборщик мусора 
финализировать объекты в определенном порядке нельзя, так как объекты могут 
содержать ссылки друг на друга, и тогда уборщик не сможет определить правиль-
ную очередность их финализации. В Microsoft нашли выход: тип 
StreamWriter
не 
поддерживает финализацию, поэтому этот тип не может сбросить данные из своего 
буфера в базовый объект 
FileStream
. Таким образом, если вы забыли вручную за-
крыть объект 
StreamWriter
, данные гарантированно будут потеряны. В Microsoft 
считают, что разработчики не смогут не заметить этой повторяющейся потери 
данных и исправят код, вставив явный вызов 
Dispose
.
1
Это поведение можно переопределить вызовом конструктора StreamWriter, получающим 
логический параметр leaveOpen.


590
Глава.21 .Автоматическое.управление.памятью.(уборка.мусора)
ПриМеЧание
В. NET.Framework.поддерживаются.управляемые.расширения.отладки.(Managed.
Debugging.Assistants,.MDA) .Когда.они.включены,. NET.Framework.выполняет.поиск.
некоторых.распространенных.ошибок.в.программах.и.запускает.соответствующий.
отладчик .В.отладчике.все.это.выглядит.как.генерирование.исключения .MDA.уме-
ет.определять.ситуации,.когда.объект.StreamWriter.удален.уборщиком.мусора.до.
своего.закрытия .Чтобы.включить.данный.управляемый.отладчик.в.Visual.Studio,.
откройте.проект.и.выберите.в.меню.команду.Debug

Exceptions .В.диалоговом.
окне.Exceptions.раскройте.узел.Managed.Debugging.Assistants,.прокрутите.стра-
ницу.вниз.до.элемента.StreamWriterBufferedDataLost.и.установите.флажок.Thrown,.
чтобы.заставить.отладчик.Visual.Studio.останавливаться.при.каждой.потере.данных.
объекта.StreamWriter 

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   429   430   431   432   433   434   435   436   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish