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

  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • SerienTrailerMP

    SerienTraile

    7 HAZİRAN 2012