读书人

C#多线程线程行列

发布时间: 2013-10-12 11:54:02 作者: rapoo

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();

Thread th2 = new Thread(new ThreadStart(ExecuteTask));
th2.Start();

Thread th3 = new Thread(new ThreadStart(ExecuteTask));
th3.Start();
}

读书人网 >C#

热点推荐