- 爱易网页
-
C#教程
- C#多线程,线程行列
日期:2014-05-17 浏览次数:20676 次
C#多线程,线程队列。
假设项目:1000条数据要插入数据库,每次1条。
要求:用5个或多个线程来处理以上任务。线程数为变量,可人为设定。
必须是后台线程,执行任务时不会造成程序界面卡死。一个线程执行完一个任务后休息500ms立即分配新的任务,直到1000个任务处理完毕。
求详细代码(数据库操作部分省略。)
------解决方案--------------------
没测试编译,有问题再说。
private AutoResetEvent timer = new AutoResetEvent(false);
public void ExecuteTask()
{
string data;
while ((data = GetData()) != null)
{
// writ to database;
timer.WaitOne(500, false);
}
}
private List<string> dataList = new List<string>();
public object obj = new object();
private string? GetData()
{
string retVal = null;
lock (obj)
{
if (dataList.Count > 0)
{
retVal = dataList[0];
dataList.RemoveAt[0];
}
}
return retVal;
}
private void button2_Click(object sender, EventArgs e)
{
//string[] s = new string[] { 1,5,3,4,2,6};
//ThreadPool.QueueUserWorkItem(
Thread th1 = new Thread(new ThreadStart(ExecuteTask));
th1.Start();