Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何异步导出PivotGridControl数据?_C#_Wpf_Devexpress - Fatal编程技术网

C# 如何异步导出PivotGridControl数据?

C# 如何异步导出PivotGridControl数据?,c#,wpf,devexpress,C#,Wpf,Devexpress,我使用的是DevExpress.Xpf.PivotGrid.PivotGridControl,用户希望加载大量数据(+50000)。之后,他想导出这些数据 我将此方法称为: this.pivotGridControl.ExportToCsv("C:\\example.csv"); 它可以工作,但因为它有大量的数据,它会挂起我的UI将近10秒 由于pivotGridControl是UI中控件的实例,我知道我不能使用ThreadPool.QueueUserWorkItem或BackgroundWo

我使用的是
DevExpress.Xpf.PivotGrid.PivotGridControl
,用户希望加载大量数据(+50000)。之后,他想导出这些数据

我将此方法称为:

this.pivotGridControl.ExportToCsv("C:\\example.csv");
它可以工作,但因为它有大量的数据,它会挂起我的UI将近10秒

由于
pivotGridControl
是UI中控件的实例,我知道我不能使用
ThreadPool.QueueUserWorkItem
BackgroundWorker
。两者都会抛出以下消息(无内部异常):

调用线程必须是STA,因为许多UI组件都需要它。


是否可以从PivotGridControl导出数据而不阻塞UI?

您可以启动一个新线程

        var ExportToCsvThread = new Thread(x => this.pivotGridControl.ExportToCsv("C:\\example.csv"););
        ExportToCsvThread.Name = "ExportToCsv Thread";
        ExportToCsvThread.Start();

ThreadPool.QueueUserWorkItem
BackgroundWorker
相同的问题。无法访问
pivotGridControl
,因为它属于dispatcher线程。我建议您将数据复制到另一个控件,而不在UI中使用它。是的,我已经考虑过了,但我的记忆力很好。我想它会复制的,对吗?;)