void saveThreading(object saveParam) { SAVEPARAM param = (SAVEPARAM)saveParam; StreamWriter sw = param.sw; Form_ProgressBar form = param.bar; param.mrEvent.WaitOne(); string line = ""; for (int i = 0; i < dataGridViewshow.Rows.Count; i++) { line = ""; for (int l = 0; l <= 12; l++) { if (dataGridViewshow.Rows[i].Cells[l].Value != null) { line += dataGridViewshow.Rows[i].Cells[l].Value.ToString() + " "; } } sw.WriteLine(line); form.addValue(); } form.returnResult = DialogResult.OK; form.Invoke(new Action(() => { form.Close(); })); }
private void buttonSave_Click(object sender, EventArgs e) { SaveFileDialog save = new SaveFileDialog(); TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); save.FileName = "save-" + Convert.ToUInt64(ts.TotalSeconds).ToString(); if (save.ShowDialog() != DialogResult.OK) { return; } bool prevIsOpen = usbCAN.IsOpen; if (prevIsOpen) { if (usbCAN.shutDevice() == false) { return; } } Thread threadSave = new Thread(new ParameterizedThreadStart(saveThreading)); string sPath = save.FileName; FileStream file = new FileStream(sPath, FileMode.Create); SAVEPARAM parm = new SAVEPARAM(); parm.sw = new StreamWriter(file); parm.mrEvent = new ManualResetEvent(false); parm.bar = new Form_ProgressBar(dataGridViewshow.Rows.Count, parm.mrEvent, threadSave); threadSave.Start(parm); parm.bar.ShowDialog(); if (parm.bar.returnResult == DialogResult.Abort) { MessageBox.Show("你终止了操作"); } else { MessageBox.Show("保存成功"); } threadSave.Abort(); threadSave = null; parm.sw.Close(); file.Close(); if (prevIsOpen) { if (usbCAN.startDevice() == false) { return; } } }