: - Invoke
, BeginInvoke
ve EndInvoke
Delegate.Invoke nasıl çalışır? Ben gibi benim kodda bir temsilci oluşturursanız
delegate void dostuff (string o);
Bu üç yöntem uygulayan System.MulticastDelegate
türetilmiş bir sınıf oluşturur. Ben Invoke
için derlenmiş IL bakarsak
tek gördüğüm geçerli:
.method public hidebysig newslot virtual
instance void Invoke(string o) runtime managed
{
} // end of method dostuff::Invoke
yöntem hiçbir kod içerir. Çağırmak işe yarıyor - temsilci çağırılıyor, ama nasıl olduğunu göremiyorum.
Çağrının çağrılmasını sağlayan voodoo aslında temsilci çağırmak nereden geliyor?
Sadece temelini oluşturan .Net çerçevesinin bir parçası - çağrı * * çağırmak için çağrıdır. 'MyDelegate.Invoke()' 'MyDelegate()' –
ile aynıdır. MyDelegate(), oluşturulan Invoke yöntemine bir çağrı olan MyDelegate.Invoke() için derlenmiş olan sözdizimsel şekerdir. Çağrı için IL sadece * callvirt instance void ConsoleApplication1.Program/dosttur :: Herhangi bir diğer yöntem çağrısından farklı olmayan Invoke (string) *. –