委托内存泄漏和字符串格式化(转抄)
形式 语法 结果 注释
数字 {0:N2} 12.36
数字 {0:N0} 13
货币 {0:c2} $12.36
货币 {0:c4} $12.3656
货币 "¥{0:N2}" ¥12.36
科学计数法 {0:E3} 1.23E+001
百分数 {0:P} 12.25% P and p present the same.
日期 {0:D} 2006年11月25日
日期 {0:d} 2006-11-25
日期 {0:f} 2006年11月25日 10:30
日期 {0:F} 2006年11月25日 10:30:00
日期 {0:s} 2006-11-26 10:30:00
时间 {0:T} 10:30:00
SqlDataReader 对象可以逐行读取数据信息,但如果有10000行数据而我们只希望读取前面的100行数据,读取完后调用 SqlDataReader.Close 会非常慢。实际上调用SqlDataReader.Close 时SqlDataReader 会把后面的9900行数据全部读完才结束。
这个问题的解决办法是在SqlDataReader.Close 前调用 SqlCommand.Cancel ,取消当前命令。
最常见的情况就是给对象添加了事件处理函数,但当不再使用该对象时却没有将该函数从对象的事件handler中减掉。另外如果分配了非托管内存,而没有手工释放,GC同样无能为力。
ItemChang 是一个对像从另外一个对像上添加的事件处理方法.
我的意思是如果你把this.cboExCityName赋值给静态变量,这样不但 cboExCityName 无法释放,ItemChang 所对应的对象也无法释放,这时就会泄漏,其实也不是泄漏,只是内存没有被正常释放。
在此谢谢eaglet , 他的文章和回答令我收获良多.