数组中删除元素
数组中删除一个元素,数组后面的元素要往前移,有两个方法:
1、拷贝到另一数组
2、把删除的元素和最后的元素调换位置,把长度减一
动态数组为我们解决了这个问题,但是切记正序遍历的时候Remove元素,会报错,可以逆序遍历删除
正则表达式替换多个空格为其他符号
string ss = richTextBox1.Text;//待转换文本
richTextBox2.Text = new Regex("[\\s]+").Replace(ss, ",");
不要再UI线程(主线程)上操作控件
private void UICmd( string str)
{
BeginInvoke(new Action(() =>
{
richTxtMsg.Text += str;
richTxtMsg.Text += Environment.NewLine;
}));
}
计算限制的异步操作
1、异步的计算限制操作要用其他线程执行,用途有
编译代码、拼写检查、语法检查、电子表格冲计算
音频、或视频数据转码以及生成图像的缩略图
2、线程池
创建和销毁线程事一个昂贵的操作,要耗费大量的时间,太多的线程会浪费
内存资源。由于操作系统必须调度可运行的线程并执行上下文切换,所以太多的线程对
性能不利,CLR包含代码来管理它的线程池。一个CLR一个线程池,由所以AppDomain共享。
如果一个进程中加载了多个CLR,那么每个CLR都有它自己的线程池。
3、ThreadPool类定义的
QueueUserWorkItem( WaitCallback callBack )
QueueUserWorkItem(WaitCallback callBack , Object state );
这个委托的定义是这样的
delegate void WaitCallback( Object state ) ;
所以方法要与这个委托具有一样的参数。
这些方法向线程池的队列添加一个" 工作项 "