SORU
11 Mayıs 2011, ÇARŞAMBA


Nasıl bir görev (VUK) STA bir çalışan iş parçacığı oluşturmak için?

İplik kullanarak oldukça basittir

 Thread thread = new Thread(MethodWhichRequiresSTA);
 thread.SetApartmentState(ApartmentState.STA);  

Nasıl bir WPF uygulama aynı kullanarak Görevleri yerine getirmek için? Burada bazı kod:

Task.Factory.StartNew
  (
    () => 
    {return "some Text";}
  )
   .ContinueWith(r => AddControlsToGrid(r.Result));  

Bir InvalidOperationException alıyorum

İş parçasıyla birçok UI bileşenleri bu gerekli çünkü STA olmalıdır.

CEVAP
11 Mayıs 2011, ÇARŞAMBA


TaskScheduler.FromCurrentSynchronizationContext Method TaskScheduler geçerli eşitleme için bir bağlam WPF uygulaması koşarken WPF memuru olan) almak için kullanabilirsiniz.

Sonra bir TaskScheduler kabul eden ContinueWith aşırı yük:

var scheduler = TaskScheduler.FromCurrentSynchronizationContext();

Task.Factory.StartNew(...)
            .ContinueWith(r => AddControlsToGrid(r.Result), scheduler);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • IGN

    IGN

    19 EYLÜL 2006
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008