ElementHost дает мне «Вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса». - PullRequest
0 голосов
/ 03 ноября 2010

Я только что добавил ElementHost в форму Windows (в форме есть другой код на c #). Затем он выдал ошибку «Вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса». Я изменил поток на STA, но он заблокировал другие вещи ... Есть ли в любом случае, чтобы заставить elementhost работать, не касаясь какого-либо другого кода?

вот код, как я меняю нить:

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);
    }

1 Ответ

0 голосов
/ 03 ноября 2010

Добавьте атрибут [STAThread] перед вашим основным. Я не уверен, если переключение потока состояние квартиры между работами.

Возможно, фоновые работники уже созданы в неправильном состоянии квартиры.

НТН

Mario

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...