Ana iş parçacığı üzerinde yürütülecek kod bölümünü nasıl zorlayabilirim?Ana iş parçacığı üzerinde kod yürütme zorlaması
Ben zamanlarda ana iş parçacığı olmayan bir iplikten gösterilecek bir özel oluşturulan ileti kutusu var: Ben bilmek istiyorum neden
budur. Ancak, ileti kutusu yapıcısı çağrıldığında, bir "InvalidOperationException" deyimi alıyorum "Çağıran iş parçacığı STA olmalı, çünkü birçok UI bileşeni bunu gerektirir." Bu mantıklı, UI öğeleri ana iş parçacığı üzerinde ele alınması gerekiyor.
MessageBox.ShowMessage (...) işlevi, özel ileti kutunun bir örneğini oluşturan ve bunu gösteren statik bir işlevdir. Mesaj kutusunun oluşturulması ve ana konu üzerinde gösterilmesini zorlayacak olan ShowMessage'a koyduğum bir şey var mı? Kodumun başka bir yerinde, benzer sorunları işlemek için Control.BeginInvoke kullanıyorum, ancak statik bir işlev olduğundan, BeginInvoke'u çağırmam için zaten mevcut bir UI öğesi yok.
MessageBox.ShowMessage öğesini Control.BeginInvoke ile çağırmalı mıyım? ShowMessage içinde çağrılacak BeginInvoke (veya bazı eşdeğer) tercih ederim.
Listelediğiniz ilk seçeneği uygulama hakkında bilgi veren bir bağlantınız var mı? – w4g3n3r
İş parçacığı başlatılmadan önce Thread.SetApartmentState() öğesini çağırın. – itowlson
İş parçacığı oluştururken, (düzenlenmiş) yanıtta gösterildiği gibi .SetApartmentState öğesini çağırın. İpliği oluştururken daha fazla yardıma ihtiyacınız varsa lütfen bize bildirin. –