Ошибка многопоточности при использовании 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()
{