SORU
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ı?

http://labs.developerfusion.co.uk/SourceViewer/browse.aspx?assembly=SSCLI&namespace=System.Threading&type=TimerBase

[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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blendtec

    Blendtec

    30 EKİM 2006
  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008