一步一步测,看看是Deserialize时慢,还是转MP时慢。
解决方案 »
- tabControl控件怎么实现透明
- C#如何完成2个IntPtr之间的复制?
- 无线信息的接收,是否还是普通的socket编程的那种方式来接收吗?
- winform 连接SQLSERVER
- 如何调用父类中的event成员?
- msdn webcast的视频一个多小时,声音可以,画面也比较清晰,为什么只有10M左右?
- c#里isFirst什么意思???
- 关于DataList的一个问题 高分求助
- VS2010中chart 怎么设置滚动条初始位置
- 没有源码只有exe,能不能用VS.net调试该程序的汇编代码?就像SoftIce那样!
- XLST 去超连接的 急 ~.在线等待!.
- 求助!谁能给我个源代码看!
public static void BinaryDeserialize(string sourceFile)
{
BinaryFormatter bf = new BinaryFormatter();
IFormatter formatter = (IFormatter)bf;
FormatterTypeStyle fts = bf.TypeFormat;
bf.TypeFormat = fts | FormatterTypeStyle.XsdString; StreamReader sr = new StreamReader(sourceFile); MP mp = null;
try
{
mp = (MP)bf.Deserialize(sr.BaseStream);
}
catch
{
return null;
}
finally
{
sr.Close();
}
for (int i = 0; i < mp.colNames.Count; i++)
{
DataColumn col = new DataColumn(mp.colNames[i].ToString(),
Type.GetType(mp.colTypes[i].ToString()));
mpCase.CaseData.Columns.Add(col);
} // Add rows
for (int i = 0; i < mp.dataRows.Length; i++)
{
DataRow row = mpCase.CaseData.NewRow();
row.ItemArray = (object[])mp.dataRows[i];
mpCase.CaseData.Rows.Add(row);
} for (int i = 0; i < mpCase.CaseData.Columns.Count; i++)
{
if (mp.colExpressions[i].ToString()!=string.Empty)
mpCase.CaseData.Columns[i].Expression =mp.colExpressions[i].ToString();
} ......
}
[Serializable]
public class MP
{
public MP(int rowCount)
{
colNames = new ArrayList();
colTypes = new ArrayList();
colExpressions = new ArrayList();
dataRows = new Object[rowCount];
factors = new ArrayList();
layers = new ArrayList();
layerfactors = new ArrayList();
charts = new ArrayList();
} public ArrayList colNames;
public ArrayList colTypes;
public ArrayList colExpressions;
public Object[] dataRows; public String caseName;
public String client;
public String product;
public String caseDesc;
public DateTime caseDate;
public Boolean layerMode; public ArrayList factors;
public ArrayList layers;
public ArrayList layerfactors;
public ArrayList charts; }
谢谢大家的帮助.如有更好解决方案,请提供.msn:[email protected]