在获取数据的同时,似乎很长一段时间,我们无法在这段时间内完成另一项任务。我正在为此使用BAckGroundWOrker。但似乎获取所有数据后等待很长一段时间仅在该应用运行过程中出现细微等待很长时间从数据库中获取数据
private void btnExrtPDF_Click(object sender, RoutedEventArgs e)
{
btnExrtPDF.IsEnabled = false;
Collection.Clear();
long NoOfRecords = 10000;
long RecordsIcrease = 10000;
SaveFileDialog xsfd = new SaveFileDialog()
{
FileName = "Book1",
DefaultExt = ".xlsx",
Filter = "Excel Document|*.xlsx",
InitialDirectory = new System.IO.DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)).ToString()
};
Nullable<bool> result = xsfd.ShowDialog();
System.Data.DataTable batchFCSB = new System.Data.DataTable();
int row = 0;
if (result == true)
{
DetailReportFCBuySell = AlyexWCFService.DL.DLTTIn.FCBuySELL(transactionName, isDetails, Convert.ToDateTime(dateEdtStartDate.EditValue).Date, Convert.ToDateTime(dtpEditEndDate.EditValue).Date, Customerid, ProductID, branchID, NoOfRecords, PageIndex - 1, isBuy);
batchFCSB = DetailReportFCBuySell.ToDataTable();
Collection.Add(row, batchFCSB);
row = 1;
PageIndex++;
for (long k = NoOfRecords; k < DetailReportFCBuySell.FirstOrDefault().TotalRecords; k = +NoOfRecords)
{
new AlxServiceClient().Using(channel =>
{
DetailReportFCBuySell = new ObservableCollection<DLReports.FCBuySellDetail>();
DetailReportFCBuySell = AlyexWCFService.DL.DLTTIn.FCBuySELL(transactionName, isDetails, Convert.ToDateTime(dateEdtStartDate.EditValue).Date, Convert.ToDateTime(dtpEditEndDate.EditValue).Date, Customerid, ProductID, branchID, NoOfRecords, PageIndex - 1, isBuy);
batchFCSB = new System.Data.DataTable();
batchFCSB = DetailReportFCBuySell.ToDataTable();
Collection.Add(row, batchFCSB);
row++;
});
NoOfRecords = NoOfRecords + RecordsIcrease;
}
for (int k = 0; k < Collection.Keys.Count; k++)
{
string xlsxFile = string.Empty;
xlsxFile = System.IO.Path.GetTempFileName();
TableView temp = new TableView();
temp.DataContext = (Collection.Where(i => i.Key == k).FirstOrDefault().Value);
// ExportToXlsx(temp, xlsxFile);
}
}
m_oWorker.RunWorkerAsync();
}
嗨我可以知道的是后台工作援引在哪里?这看起来有点直接通过使用UI线程 –
m_oWorker.RunWorkerAsync(); –
这是在这里面使用的。和我在构造函数 –