使用LiveChart时出现线程错误

时间:2017-07-26 17:52:44

标签: c# .net winforms livecharts

我正在尝试在winforms应用程序中使用LiveCharts CartesianChart。 当我尝试运行应用程序时出现此错误:

  

PresentationCore.dll中出现未处理的“System.InvalidOperationException”类型异常

     

附加信息:调用线程必须是STA,因为许多UI组件都需要这个。

this.cartesianChart1 = new LiveCharts.WinForms.CartesianChart();函数内的Form.Designer.cs中包含InitializeComponent()的行。

有什么方法可以解决这个问题吗?

2 个答案:

答案 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()
{