我正在尝试在winforms应用程序中使用LiveCharts CartesianChart。 当我尝试运行应用程序时,会出现此错误:
PresentationCore 中发生了类型为"System.InvalidOperationException"的未处理异常.dll
其他信息:调用线程必须是 STA,因为许多 UI 组件都需要这样做。
在包含 Form.Designer 中的this.cartesianChart1 = new LiveCharts.WinForms.CartesianChart();
的行上.cs在InitializeComponent()
函数内。
有什么办法可以解决这个问题吗?
您需要从新线程运行它并将单元状态设置为 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()
是创建和显示图表的位置。
你需要在Main
之前写[STAThread]
[STAThread]
static void Main()
{