using System; using System.Collections.Generic; using System.Windows; using System.Threading; using Aitex.UI.Charting.Model; using Aitex.UI.Charting.ViewModel; using DataAnalysisControl.Core; namespace Aitex.UI.Charting.View { /// /// Interaction logic for DataSourceExportingDialog.xaml /// public partial class DataSeriesExportingAll : Window { public DataSeriesExportingAll(string fileName) { InitializeComponent(); _viewModel = CommonViewModel.Instance; _lines = _viewModel.GetAllDataLineSeries(); if (_lines == null) { MessageBox.Show(string.Format(DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_DataSeriesExportingAll_No_data)); } else { txt_Info.Content = string.Format(DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_DataSeriesExportingAll_exporting); txt_Completed.Content = "50%"; progressBar1.Value = 50; _archieveFilePath = fileName; _thread = new Thread(new ThreadStart(Task_Export)); _thread.Name = "data analysis export all thread"; _thread.IsBackground = true; _thread.Start(); } } CommonViewModel _viewModel; string _archieveFilePath; Thread _thread; List _lines; private void Task_Export() { try { List datas; List dataNames = new List(); foreach (MyLineSeries _line in _lines) { dataNames.Add(_line.SeriesName); } var source = _lines[0].DataSource; var ret = source.GetData(dataNames, source.BeginTime, source.EndTime, out datas); if (ret) { using (System.IO.StreamWriter fs = new System.IO.StreamWriter(_archieveFilePath)) { fs.Write("Time"); foreach (DataItem data in datas) { fs.Write(","); fs.Write(data.DataName); } fs.WriteLine(""); for (int i = 0; i < datas[0].RawData.Count; i++) { fs.Write(datas[0].TimeStamp[i].ToString("yyyy/MM/dd HH:mm:ss")); foreach (DataItem data in datas) { fs.Write(","); fs.Write(data.RawData[i].ToString()); } fs.WriteLine(""); } } MessageBox.Show(string.Format(DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_Task_Export_exportto, _archieveFilePath), DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_Task_Export_data_export, MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show(string.Format(DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_Task_Export_export_error), DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_Task_Export_data_export, MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { CONTEXT.WriteLog(ex, string.Format("导出数据发生异常")); MessageBox.Show(string.Format(DataAnalysisControl.Properties.Resource.DataSeriesExportingDialog_Task_Export_export_error, ex.Message), DataAnalysisControl.Properties.Resource.DataSeriesExportingAll_Task_Export_data_export, MessageBoxButton.OK, MessageBoxImage.Error); } finally { this.Dispatcher.BeginInvoke(new Action(() => { Close(); })); } } private void btnAbort_Click(object sender, RoutedEventArgs e) { if(_thread != null) _thread.Abort(); Close(); } } }