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

  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • thewinekone

    thewinekone

    17 Aralık 2005
  • Tomas N

    Tomas N

    14 Kasım 2010