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

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010