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