2008-10-22 11 views
7

WinForms diğer geliştiriciler tarafından kullanılacak bir C# dll oluşturuyorum. Bazı nedenlerden dolayı, bu kitaplıktaki yöntemlerin Main (GUI) Thread'den çağrılması ve geliştiriciyi uyarması durumunda böyle bir şeyi (örneğin, log dosyasında) yaptığını tespit etmek istiyorum. Ana iş parçasından arama yöntemini algılamanın herhangi bir mantıklı yolu var mı? Unutma WinForm uygulamasına erişimim yok.C# kitaplığı içinde ana iş parçacığı çalıştırmayı algılama

cevap

17

Bu durumda kolay bir çözüm, Ana Kullanıcı Arabirimi iş parçacığı üzerinde oluşturulan kitaplık derlemesinde bir statik denetim bildirmektir. Eğer kütüphane ana iş parçacığı aranırsa algılamak istiyorsanız, aşağıdaki

if (MyLibraryControl.InvokeRequired) 
    //do your thing here 
+1

Bu, soru için doğru cevap olarak işaretlenmelidir. –

2

en basit seçeneği (eğer şekliniz varsa/kullanışlı kontrol) InvokeRequired kontrol etmektir kullanın.

Eğer yoksa, bir İleti veya Gönderme benzetimini yapmak için SynchronizationContext kullanmayı deneyebilir ve hangi iş parçacığı olduğunu kontrol edebilirsiniz? Gönderme veya Gönderme, kullanıcı arayüzü iş parçacığına geçecektir.

İlgili konular