سؤال

وانا مبتدئ لبرنامج الأغذية العالمي ولها زوجان من الأسئلة حول WPF ونماذج Windows التكامل.

ولدي طلب والبصرية C # Windows الموجودة نماذج. أود أن دمجه مع نافذة WPF، التي يمكن أن تظهر على زر نقرة. لم يكن ذلك ممكنا كما تتوقع WPF في موضوع الدعوة إلى أن يكون STAThread وافتراضيا WinForm يفترض أن موضوع هو MTAThread. حاولت وضع البيض موضوع جديد مع دولة شقة STAThread لاستدعاء UI WPF ولكن ذلك لم ينجح. حاولت استخدام طريقة Dispatcher.BeginInvoke والعمال الخلفية أيضا، ولكن أيا منها لا حل المشكلة.

1) هل يمكننا إجراء مكالمة إلى WPF نافذة / السيطرة من دون بمناسبة الرئيسية باعتبارها STAThread؟ إذا كان ذلك ممكنا، يمكن لأي شخص يرجى لي نقطة إلى الاتجاه الصحيح؟ 2) إذا كان السبيل الوحيد لتحقيق ذلك هو من خلال جعل الرئيسية الموضوع إلى STAThread، سيكون هناك أي تأثير على الأداء العام / استجابة التطبيق.

وشكرا مقدما.

هل كانت مفيدة؟

المحلول

وأعتقد أن أبسط الحلول هو جعل موضوع WinForms عناصر الخاص في تنفيذ STA. فلا حرج مع وجود STA WinForms عناصر موضوع التطبيق (هو في الواقع في كثير من الأحيان الافتراضي).

ويمكنك إصلاح هذا بإضافة السطر التالي إلى الأسلوب الرئيسي من البرنامج:

[STAThreadAttribute]
static void Main(string[] args)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top