I am trying to do the export in a background worker.
Does anyone have this working? What are the tricks to get it to work.
I implemented it the simple way with a backgroundworker, DoWoker,,,and I get an exception associated with TSA...
Any clues would be appriciated.
Hello,
This is because the background worker will try to execute this on a background thread and the exporting process will try to access the XamDataGrid, which is created on the UI thread. What you need to do is to use Dispatcher.BeginInvoke() when exporting :
BackgroundWorker worker = new BackgroundWorker ();
public MainWindow()
{
InitializeComponent();
worker.DoWork += new DoWorkEventHandler (worker_DoWork);
}
void worker_DoWork(object sender, DoWorkEventArgs e)
DataPresenterExcelExporter exporter = new DataPresenterExcelExporter ();
Dispatcher.BeginInvoke(
new Action (() =>
exporter.Export(this .xamDataGrid1, "exported.xlsx" , WorkbookFormat .Excel2007);
}), null );
private void Button_Click(object sender, RoutedEventArgs e)
worker.RunWorkerAsync();
Thanks for the quick reply.
I tried this already, and yes, it does process the code in a new thread, but the previous thread waits for this new thread to be completed.
What I fundamentally need is two processes, one for the main app, and a second one for saving the data to excel. These processes need to be independent(that is why I am calling processes) so, while I am saving to the excel format, I can go back into the main process and do other things.
This example helps group the grid with the saving to ensure that this process is atomic, but it does not provide the parrallelism that I am looking for.
Any help down this path would be appriciated.
HI,
I agree with your workarounds. In a BackGround Worker threa,d create the Excel Workbook using the DataSource. Here a help link to our Excel Engineer
http://help.infragistics.com/NetAdvantage/WPF/2010.3/CLR4.0/?page=WPF_Infragistics_Excel_Engine.htmlSincerely,
MattDeveloper Support Engineer
Is there a plan to allow Excel Exporting in a separate theread, without these work arounds?
Yes, there is a plan that we have Asynchronous exporting in separate thread in the future.
Hi !
I'm encoutering the same issue : no way to do an asychronous excel export. XamDataGrid is locked up.
To you have any news about the asynchrnous exporting ?
There is asynchronous support in the DataPresenterExcelExporter and DataPresenterWordWriter that was added in NA 11.1. You would use one of the ExportAsync overloads instead of the Export overloads. It is important to note that this is still done on the UI thread since it is dealing with objects that have thread affinity (e.g. the source grid and likely the datasource too) but the work is broken up to avoid locking the UI thread. The AsyncExportDuration determines the amount of time that will be spent exporting for each time slice and the AsyncExportInterval determines the amount of time to wait in between each time slice.