يعطيني ElementHost "يجب أن يكون مؤشر ترابط الاتصال STA ، لأن العديد من مكونات واجهة المستخدم تتطلب ذلك".
-
28-09-2019 - |
سؤال
لقد أضفت للتو عنصرًا إلى نموذج Windows (هناك رمز C# آخر في النموذج). ثم أعطاني الخطأ "يجب أن يكون مؤشر ترابط الاتصال STA ، لأن العديد من مكونات واجهة المستخدم تتطلب ذلك." لقد قمت بتغيير الخيط إلى Sta ، لكنه منعت أشياء أخرى ... هل هناك على أي حال لجعل elementhold يعمل دون لمس أي رمز آخر؟
هنا هو الكود كيف أقوم بتغيير الموضوع:
public UCClientSummary()
{
InitializeComponent();
Thread thread = new Thread(createElementHost);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
public void createElementHost()
{
ElementHost elementHost = new ElementHost();
elementHost.Dock = DockStyle.Fill;
LDControls.ucCell uc = new LDControls.ucCell();
elementHost.Child = uc;
this.Controls.Add(elementHost);
}
المحلول
أضف [stathread] attrrebibute أمام رئيسي. لست متأكدًا مما إذا كان تبديل حالة شقة الخيوط بين الأعمال.
قد يكون عمال الخلفية تم إنشاؤه بالفعل في ولاية الشقة الخاطئة.
HTH
ماريو
لا تنتمي إلى StackOverflow