SORU
8 ŞUBAT 2011, Salı


Dağıtıcısı.Beginınvoke: Bu Sistem için lambda dönüştürmek.Temsilci

System.Windows.Threading.Dispatcher.BeginInvoke aramaya çalışıyorum. Yöntem imzası bu

BeginInvoke(Delegate method, params object[] args)

Bir Temsilci oluşturmak yerine bir Lambda geçirmeye çalışıyorum.

_dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } );

Bana derleyici bir hata Sistemi lambda dönüştürmek yapamayacağını söyleyerek veriyor.Temsilci. Temsilci imzası parametre ve geri dönüş değeri void olarak bir nesne alır. Benim lambda bu maçta henüz çalışmıyor. Neyi kaçırıyorum?

CEVAP
8 ŞUBAT 2011, Salı


Yöntemi System.Delegate, temsilci özel bir tür vermek için gereken bir zaman aldığından, bu tür olarak ilan etti. Bu bir at veya aşağıdaki gibidir: yeni DelegateType ile belirtilen temsilci oluşturulması ile yapılabilir

_dispatcher.BeginInvoke(
     new Action<MyClass>((sender) => { DoSomething(); }),
     new object[] { this } 
  );

SLaks işaret ettiği gibi, ayrıca, Dispatcher.BeginInvoke parametreler bir dizi alır, bu yüzden sadece yazabilirsiniz:

_dispatcher.BeginInvoke(
     new Action<MyClass>((sender) => { DoSomething(); }),
     this
  );

Veya, Eğer bir Şey, bu nesne üzerinde bir yöntem ise:

_dispatcher.BeginInvoke(new Action(this.DoSomething));

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011