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



Download 6,27 Mb.
Pdf ko'rish
bet398/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   394   395   396   397   398   399   400   401   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.20 .Исключения.и.управление.состоянием
объекты (например, не выполняется упаковка), не вызывайте внутри ни вирту-
альных, ни интерфейсных методов, не пользуйтесь делегатами или отражениями, 
так как в этом случае JIT-компилятор не сможет определить, какой именно метод 
вызывается на самом деле. Можно даже вручную подготовить все методы при по-
мощи одного из следующих методов класса 
RuntimeHelpers
:
public static void PrepareMethod(RuntimeMethodHandle method)
public static void PrepareMethod(RuntimeMethodHandle method,
RuntimeTypeHandle[] instantiation)
public static void PrepareDelegate(Delegate d);
public static void PrepareContractedDelegate(Delegate d);
Имейте в виду, что ни компилятор, ни CLR не проверяют гарантии, которые 
вы даете, снабжая свой метод атрибутом 
ReliabiltyContractAttribute
. Если вы 
что-то перепутали, состояние вполне может оказаться поврежденным.
ПриМеЧание
Даже. хорошо. подготовленный. метод. может. стать. источником. исключения.
StackOverflowException .Если.среда.CLR.не.выполняется.в.размещенном.(hosted).
режиме,.исключение.StackOverflowException.приводит.к.немедленному.завершению.
процесса.путем.внутреннего.вызова.метода.Environment FailFast .Если.же.среда.
работает.в.размещенном.режиме,.метод.PreparedConstrainedRegions.проверяет,.
осталось.ли.в.стеке.хотя.бы.48.Кбайт.свободного.места .При.ограниченном.месте.
в.стеке.исключение.StackOverflowException.генерируется.до.начала.блока.try 
Не следует забывать и про метод 
ExecuteCodeWithGuaranteedCleanup
класса 
RuntimeHelper
, который предоставляет еще одну возможность выполнения кода 
с гарантированной очисткой:
public static void ExecuteCodeWithGuaranteedCleanup(
TryCode code, CleanupCode backoutCode, Object userData);
При вызове этого метода вы передаете тело блоков 
try
и 
finally
в качестве 
методов обратного вызова, прототипы которых соответствуют этим двум делегатам:
public delegate void TryCode(Object userData);
public delegate void CleanupCode(Object userData, Boolean exceptionThrown);
Упомяну еще один способ гарантированного выполнения кода. Это класс 
CriticalFinalizerObject
, который подробно рассмотрен в следующей главе.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   394   395   396   397   398   399   400   401   ...   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