SORU
20 AĞUSTOS 2012, PAZARTESİ


((yeni nesne) kilit -- Kargo kültü ya da çılgın bir "dil özel durum"?

Bazı kod danışman tarafından yazılmış ve tekrar gözden geçiriyorum ve kırmızı bayraklar onlarca çoktan attı ise, aşağıdaki kod aklım değil

private void foo()
{
    if (InvokeRequired)
    {
        lock (new object())
        {
            if (m_bar!= null)
                Invoke(new fooDelegate(foo), new object[] { });
        }
    }
    else
    {
        if(OnBazChanged != null)
            OnBazChanged();
    }
}

Kilit nedir ((yeni nesne). Ne olursa olsun her zaman başka bir nesne üzerine kilitlemek gibi bir etkisi olmalı, ama kilitleme bu tür kod boyunca kalıcı bile olmayan kopyalama ve yapıştırılan parçalar. Bu C bazı özel durumda# ya da programcı sadece çalışmak için bir süre önce yaşanan bazı kargo kültü hazırlamıştır? bilmediğim bir şey için derlenmiş dil

CEVAP
20 AĞUSTOS 2012, PAZARTESİ


Eğer bu gören biri olsaydı, ben sürpriz olmaz:

private readonly object lockObj = new object();

private void MyMethod()
{
    lock(lockObj)
    {
        // do amazing stuff, so amazing it can only run once at a time
        // e.g. comands on the Mars Rover, or programs on iOS pre 4 / 5 ??
    }
}

ve satır sayısını kesilmiş olabileceğini düşünüyorlardı.

Eğer bu durumda bile olsam çok endişelenirdim...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Fuse

    Fuse

    21 Kasım 2005