يعطيني ElementHost "يجب أن يكون مؤشر ترابط الاتصال STA ، لأن العديد من مكونات واجهة المستخدم تتطلب ذلك".

StackOverflow https://stackoverflow.com/questions/4082649

  •  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

ماريو

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top