欢迎光临
我的个人博客网站

C# Task多线程与队列

public static void RunTask(List list, Action action, int threadCount = 5, bool waitFlag = true)
{
ConcurrentQueue queue = new ConcurrentQueue(list);
Task[] tasks = new Task[threadCount];
for (int i = 0; i < threadCount; i++)
{
tasks[i] = Task.Run(() =>
{
T t;
while (queue.TryDequeue(out t))
{
action(t);
}
});
}
if (waitFlag)
{
Task.WaitAll(tasks);
}
}
//调用方法
new System.Threading.Thread(delegate()
{
IP.RunTask(list, _num =>
{
List_int.Dispatcher.Invoke(delegate()
{
List_int.Items.Add(_num + DateTime.Now.ToString(“YYYY-MM-dd-mm-ss”));

                });                 //MessageBox.Show();                 System.Threading.Thread.Sleep(2000);                 List_int.Dispatcher.Invoke(delegate()                 {                     List_int.Items.Add("结束" + _num);                 });             });             MessageBox.Show("结束");         }            ).Start();
赞(0) 打赏
未经允许不得转载:张拓的天空 » C# Task多线程与队列
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏