http://community.csdn.net/Expert/topic/4765/4765336.xml?temp=.4710047
发布几个好用的函数: /// <summary>
/// 检查字符串是否数字 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_String"></param>
/// <returns></returns>
public static bool IsNumber(string _String)
{
//return Regex.IsMatch(_String, @"^\d{1,9}$");
return Regex.IsMatch(_String, @"^(\+|\-){0,1}\d{1,9}(\.\d{1,9}){0,1}$");
} /// <summary>
/// 过滤数组中重复的数据 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_StringArray"></param>
/// <returns></returns>
public static string[] FilterRepeat(string[] _StringArray)
{
ArrayList _ArrayList = new ArrayList();
foreach(string _String in _StringArray)
{
if(!_ArrayList.Contains(_String))
{
_ArrayList.Add(_String);
}
}
return (string[])_ArrayList.ToArray(typeof(string));
} /// <summary>
/// 数组相减,把数组1中与数组2相同的元素删除 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_StringArray"></param>
/// <returns></returns>
public static string[] ArraySubtract(string[] _StringArray1, string[] StringArray2)
{
ArrayList _ArrayList = new ArrayList();
foreach(string _String in _StringArray1)
{
if(!_ArrayList.Contains(_String))
{
if(Array.IndexOf(StringArray2, _String) == -1)
{
_ArrayList.Add(_String);
}
}
}
return (string[])_ArrayList.ToArray(typeof(string));
} /// <summary>
/// 截取字符串 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计
/// </summary>
/// <param name="_String"></param>
/// <param name="_Max"></param>
/// <returns></returns>
public static string GetSubStr(string _String, int _Max)
{
byte[] _Byte = System.Text.Encoding.Default.GetBytes(_String.ToCharArray()); if(System.Text.Encoding.Default.GetByteCount(_String) < _Max)
{
return System.Text.Encoding.Default.GetString(_Byte);
}
else
{
return System.Text.Encoding.Default.GetString(_Byte, 0, _Max);
}
}
/// <summary>
/// 对字符串编码 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_String"></param>
/// <param name="_Coding"></param>
/// <returns></returns>
public static string GetEnCoder(string _String, string _Coding)
{
byte[] _ByteArray = Encoding.GetEncoding(_Coding).GetBytes(_String);
string _ReturnString = "";
foreach (byte _Byte in _ByteArray) 
{
_ReturnString += "%" + Convert.ToString(_Byte, 16).ToUpper();
}
return _ReturnString;
} /// <summary>
/// 对字符串解码 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_String"></param>
/// <param name="_Coding"></param>
/// <returns></returns>
public static string GetDeCoder(string _String, string _Coding)
{
string[] _StringArray = _String.Split('%');
byte[] _ByteArray = new byte[_StringArray.Length - 1];
for(int i = 1; i < _StringArray.Length; i ++)
{
_ByteArray[i - 1] = Convert.ToByte(Convert.ToInt32(_StringArray[i], 16));
}
return Encoding.GetEncoding(_Coding).GetString(_ByteArray);
} /// <summary>
/// 字符编码转换 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计 /// </summary>
/// <param name="_String"></param>
/// <param name="_FormCoding"></param>
/// <param name="_ToCoding"></param>
/// <returns></returns>
public static string GetCodingSwitch(string _String, string _FormCoding, string _ToCoding)
{
if(_FormCoding == _ToCoding)
{
return _String;
}
Encoding _Form = Encoding.GetEncoding(_FormCoding);
Encoding _To = Encoding.GetEncoding(_ToCoding);
return _To.GetString(Encoding.Convert(_Form, _To, _Form.GetBytes(_String))); 
}
线程池控制: 很多人问到线程太多时怎么控制,其实很简单
private int _ThreadMax = 2; //最大线程 private ManualResetEvent[] _ManualResetEvent = null; /// <summary>
/// 线程开执行 www.gzyd.net(赢动科技) 广州网站建设  网站建设 网站推广 网站设计 广州网站设计
/// </summary>
/// <param name="_ThreadCount"></param>
public void ThreadRun(int _ThreadCount)
{
int _Number = 100; //总线程数量 int _ThreadTemp = _ThreadCount - _Number; if(_ThreadTemp >= _ThreadMax)
{
return;
}
else if(_ThreadTemp < 0)
{
_Number = _ThreadMax;
}
else
{
_Number = _ThreadMax - _ThreadTemp;
} _ManualResetEvent = new ManualResetEvent[_Number]; for(int i = 0; i < _Number; i ++)
{ int _NumberNow = (_ThreadCount / _ThreadMax -1) * _ThreadMax + i + 1; //此数字是从i =1 for i = 100(最大线程数)
//如果从零开始计
//int _NumberNow = (_ThreadCount / _ThreadMax -1) * _ThreadMax + i; //此数字是从i =0 for i = 100 - 1 (最大线程数)
_ManualResetEvent[i] = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem(new WaitCallback(Run/*你的线程要执行的函数*/), null/*要传递到Run的参数*/);  } if(WaitHandle.WaitAll(_ManualResetEvent))
{
ThreadRun(_ThreadCount + _ThreadMax);
}
} 使用方法: ThreadRun(_ThreadMax);