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);
发布几个好用的函数: /// <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);
解决方案 »
- 绘制半透明图片
- UserControl里的TabControl控件的问题
- 在c# winform里面,怎么遍历 dataGrid的所有行和网格?????????????
- 卡死了,救命?关于B/S系统实时显示服务器端消息的问题
- 使用sql语言,怎么执行delete操作,下面的简短代码没有起作用,为什么?
- 小弟第一次发贴,100分请教资深程序高手:JAVA和C#的区别?最好附上个人看法:J2EE和.NET发展前景(困惑ing)谢谢!不胜感激
- 请教?????
- 这个函数在C#中如何调用?
- 使用smtp协议发邮件问题
- vb.net的菜单中可以直接插入图像吗?
- 哪位高手能不能帮我看看一个C#应用程序的入口界面在哪里? 谢谢!
- 说真的,还没见过一个用c#程序能跑得快一点的.不知这是不是c#的通病.
在Run(/*你的线程要执行的函数*/)函数里面一定要有
_ManualResetEvent[i/*此参数要从调用函数里传过来*/].Set();
2号群已经开放:4510861
请大家赶快加入!
好东西应该共享,呵呵