2011-07-20 6 views
5

Threading in C# by Joseph Albahari görüşmeler:Delegelerdeki BeginInvoke ve EndInvoke hem tam çitler oluşturur mu? belirten kısaca bu konuda

oluşturmak örtük aşağıdaki tam çitler:

  • C# 'ın kilit beyanı (Monitor.Enter/Monitor.Exit) İçten kilitli sınıfına
  • tüm yöntemleri (biz ') yakında parçacığı havuzu kullanmak
  • asenkron geri aramalar bunlar ele alacağız - bu asenkron delegeleri, APM geri aramalar içerir ve Görev
  • continuations Ayar ve sinyalizasyon bekleyen böyle başlatma veya görev bekliyor gibi sinyalizasyon dayanır
  • şey inşa

"asenkron delegeler" listesinde olduğu gibi, ben en azından tamamen EndInvoke olduğunu varsaymak istiyorum çitle çevrili. Peki ya BeginInvoke? Ne yazık ki, BeginInvoke koduna F11 (= hata ayıklama adımı) yapamıyorum - kaynak bir yerlerde mevcut mu? Kesin bir cevaba bağlantı daha iyi olsa da.

+1

(Beginınvoke çalışma zamanı tarafından sağlanan en Microsoft'tan edinilebilir kaynak kodu onun elf; –

+0

Bu iki yöntemi doğrudan makine kodunda geliştirdiler mi? ;) Ancak dürüstlük, MS 'kaynaklarına bakmanın bir yolu olup olmadığından bağımsız olarak, iplik güvenliği açısından herhangi bir garanti olup olmadığını bilmek güzel olurdu. 'En son standartların II ve IV bölümlerinde' bariyer ',' çit ',' uçucu 'kelimelerini veya [http://msdn.microsoft.com/ adresinden geri adım attığım' çalışma taslağını 'hiçbirini bulamadım. tr-us/netframework/aa569283.aspx] –

+0

Muhtemelen makine kodu C veya C++ olmayabilir. Gerçekten ona bakmak istiyorsanız, nasıl yapıldığını görmek için Mono kaynak kodunu indirebilirsiniz. – codenheim

cevap

-1

MSDN Beginınvoke ÅŸan olduğunu söylüyor: http://msdn.microsoft.com/en-us/library/0b1bf3y3.aspx

parçacığı için güvenlidir bir kumanda üzerindeki dört yöntem vardır: Çağır, Beginınvoke, EndInvoke ve CreateGraphics kontrolü için sap zaten

oluşturulup oluşturulmadığını
+1

Sorunun, "Control.BeginInvoke", ancak "Delegate" in "BeginInvoke" ve "EndInvoke" hakkında soru sormadığını düşünüyorum. – paercebal

+0

Sadece iş parçacığı olmak çok fazla şey söylemez. – CodesInChaos

+1

Evet, bu durumda Control.BeginInvoke ile ilgilenmiyorum, ancak delegelerdeki Begin/EndInvoke. –

-1

tüm çerçevesi Reference Source Website

+0

BeginInvoke ve EndInvoke için kaynak kodu tam olarak nerede? Ben 3.5SP1 üzerinde çalışıyorum, bu yüzden ".NET_3.5_sp1_redist" için kaynaklara baktım - orada değiller. Marc Gravell'in dediği gibi, büyük olasılıkla çalışma zamanının kaynağında değil, üstünde çalışmakta olan .net kütüphanesi değil (ve linkinize olan bağlantılarını indirebiliyorum). –

İlgili konular