2 ŞUBAT 2010, Salı
Neden kullan try {} finally {} boş deneyin bir blok ile?
Yöntemi try{} finally{}
bir blok var ama try{}
boş System.Threading.TimerBase.Dipose()
fark ettim.
Boş bir deneyin try{} finally{}
kullanarak herhangi bir değeri var mı?
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
internal bool Dispose(WaitHandle notifyObject)
{
bool status = false;
bool bLockTaken = false;
RuntimeHelpers.PrepareConstrainedRegions();
try {
}
finally {
do {
if (Interlocked.CompareExchange(ref m_lock, 1, 0) == 0) {
bLockTaken = true;
try {
status = DeleteTimerNative(notifyObject.SafeWaitHandle);
}
finally {
m_lock = 0;
}
}
Thread.SpinWait(1);
// yield to processor
}
while (!bLockTaken);
GC.SuppressFinalize(this);
}
return status;
}
CEVAP
2 ŞUBAT 2010, Salı
http://blog.somecreativity.com/2008/04/10/the-empty-try-block-mystery/:
Bu metodoloji bir karşı korur İplik.İptal kesintiye Ara işleme. Bu web sayfası İplik.İptal “Unexecuted diyor sonunda blok önce yürütülür iş parçacığı iptal edildi”. İçin böyle garanti işleme eğer konu varsa bile bitirir birileri tarafından ortada iptal edildi konu hakkında İptal arama yapabilirsiniz en sonunda tüm kod yer (alternatif yazmaktır blok “” belirlemek için catch bloğu içinde kod daha önce neredeydin “” oldu deneyin İptal tarafından kesildi ve devam edin istersen orada).
Bunu Paylaş:
Neden "her blok deneyin" sara...
try-finally blok StackOverflowError en...
Neden Java'In hashCode() Dize çar...
Neden verim sıradan bir IEnumerable ku...
Gerçekten bir deneyin { return x; } fi...