Ошибка многопоточности при использовании LiveChart

Я пытаюсь использовать LiveCharts CartesianChart в приложении winforms. Когда я пытаюсь запустить приложение, появляется эта ошибка:

Произошло необработанное исключение типа "System.InvalidOperationException" в PresentationCore.dll

Дополнительная информация: вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса.

на линии, содержащей this.cartesianChart1 = new LiveCharts.WinForms.CartesianChart(); в Form.Designer.cs внутри InitializeComponent() функция.

Любой способ решить это?

1 ответ

Вам нужно запустить его из нового потока и установить состояние квартиры на STA:

 TaskCompletionSource<T> tcs = new TaskCompletionSource<T>();
        Thread thread = new Thread(() =>
        {
            try
            {
                tcs.SetResult(func());
            }
            catch (Exception e)
            {
                tcs.SetException(e);
            }
        });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();

где func() где вы создаете и показываете диаграмму.

Вам нужно написать [STAThread] до вашего Main

[STAThread]
static void Main()
{
Другие вопросы по тегам