void bWorker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bWorker = sender as BackgroundWorker; object[] param = e.Argument as object[]; _COBJECTS obj = param[1] as _COBJECTS; string path = param[0].ToString(); ToolKit.GetDirectoryInfo(path.Substring(0, path.LastIndexOf("\\"))); using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) { using (MemoryStream ms = new MemoryStream()) { GZipStream zip = new GZipStream(stream, CompressionMode.Compress); BinaryFormatter formater = new BinaryFormatter(); obj.StructSource.AcceptChanges(); _FileHeader header = new _FileHeader(); header.Set("总造价", obj.StatusInfo.当前工程总造价.ToString()); formater.Serialize(ms, header); formater.Serialize(ms, obj.StructSource); byte[] buffer = ms.ToArray(); zip.Write(buffer, 0, buffer.Length); zip.Close(); e.Result = path; } } }
/// <summary> /// 批量开始工作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void PLWorker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bWorker = sender as BackgroundWorker; object[] param = e.Argument as object[]; ArrayList obj = param[1] as ArrayList; string path = param[0].ToString(); FileInfo fi; GZipStream zip; string ph; BinaryFormatter formater; DataSet ds; _FileHeader header; byte[] buffer; foreach (_COBJECTS info in obj) { ph = string.Format("{0}\\{1}.JGCX", path, info.Name); fi = new FileInfo(ph); if (fi.Exists) { ph = string.Format("{0}\\复件 {1}.JGCX", path, info.Name); } using (FileStream stream = new FileStream(ph, FileMode.Create, FileAccess.Write, FileShare.None)) { using (MemoryStream ms = new MemoryStream()) { zip = new GZipStream(stream, CompressionMode.Compress); formater = new BinaryFormatter(); //info.StructSource.AcceptChanges(); ds = info.StructSource.Copy(); ds.AcceptChanges(); header = new _FileHeader(); header.Set("总造价", info.StatusInfo.当前工程总造价.ToString()); formater.Serialize(ms, header); formater.Serialize(ms, ds); buffer = ms.ToArray(); zip.Write(buffer, 0, buffer.Length); zip.Close(); } } } e.Result = path; }
/// <summary> /// 获取头数据 /// </summary> /// <returns></returns> public _FileHeader Get_FileHeader() { string sql = "select [value] from 变量表 where [key] = 'ZZJ' and [Type] = '-3'"; object obj = this.ExecuteScalar(sql); if (obj != null) { _FileHeader info = new _FileHeader(); info.Set("总造价", obj); return(info); } else { return(new _FileHeader()); } }