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


Освобождение.ресурсов.при.помощи.механизма.финализации ВниМание



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

585
Освобождение.ресурсов.при.помощи.механизма.финализации
ВниМание
Если.класс.определяет.поле.типа,.реализующего.паттерн.dispose,.сам.класс.тоже.
должен.реализовать.этот.паттерн .Метод.Dispose.должен.уничтожать.объект,.на.
который.ссылается.поле .Это.позволит.пользователю.класса.вызвать.для.него.Dis-
pose,.что.в.свою.очередь.приведет.к.освобождению.ресурсов,.используемых.самим.
объектом 
К счастью, класс 
FileStream
реализует интерфейс 
IDisposable
, а его реализа-
ция вызывает 
Dispose
для приватного поля 
SafeFileHandle
объекта 
FileStream

Теперь мы можем изменить свой код так, чтобы файл явно закрывался в нужный 
момент (вместо того, чтобы дожидаться уборки мусора когда-нибудь в будущем). 
Измененный исходный код выглядит так:
using System;
using System.IO;
public static class Program {
public static void Main() {
// Создание байтов для записи во временный файл
Byte[] bytesToWrite = new Byte[] { 1, 2, 3, 4, 5 };
// Создание временного файла
FileStream fs = new FileStream("Temp.dat", FileMode.Create);
// Запись байтов во временный файл
fs.Write(bytesToWrite, 0, bytesToWrite.Length);
// Явное закрытие файла после записи
fs.Dispose();
// Удаление временного файла
File.Delete("Temp.dat"); // Теперь эта инструкция 
// всегда остается работоспособной
}
}
Теперь при вызове метода 
Delete
объекта 
File
Windows видит, что файл не 
открыт, и успешно удаляет его.
Учтите, что гарантированное освобождение системных ресурсов возможно и без 
вызова 
Dispose
. Рано или поздно оно все равно будет выполнено; вызов 
Dispose
позволяет вам управлять тем, когда это произойдет. Кроме того, вызов 
Dispose
не 
удаляет управляемый объект из управляемой кучи. Единственный способ осво-
бождения памяти в управляемой куче — уборка мусора. Это означает, что методы 
управляемого объекта могут вызываться даже после освобождения всех системных 
ресурсов, которые им могли использоваться.
Следующий код вызывает метод 
Write
после закрытия файла и пытается до-
писать в файл несколько байтов. Разумеется, новые байты записаны не будут, 
а при выполнении кода второй вызов метода 
Write
выдает исключение 
System.


586
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   426   427   428   429   430   431   432   433   ...   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