当前位置:编程学习 > C#/ASP.NET >>

Task 多线程交替运行 求大神指教

      static void Main(string[] args)
     {
         for (int i = 0; i < 10; i++)
         {
             demo dm = new demo
             {
                 ID = i,
                 Name = "Text" + i,
                 DownFrom = "中国"
             };
             que.Enqueue(dm);
         }  
  CancellationTokenSource cts = new CancellationTokenSource();
        Task parent = new Task(() =>
        {

            //创建任务工厂  
            TaskFactory tf = new TaskFactory(cts.Token, TaskCreationOptions.AttachedToParent, TaskContinuationOptions.AttachedToParent, TaskScheduler.Default);
            //添加一组具有相同状态的子任务   
            Task[] task = new Task[]{  
                      tf.StartNew(() => { test(que, cts.Token); }), 
                      tf.StartNew(() => { test(que, cts.Token); }),
                   
                  };
        });

        parent.Start();
        parent.Wait();
        Console.Read();
}
  static demo dm;
  static  Queue<demo> que = new Queue<demo>();
  public static demo test(Queue<demo> list, CancellationToken token)
  {

      if (token.IsCancellationRequested)
      {

      }

      foreach (var va in list)
      {
          dm = new demo
          {
              ID = va.ID,
              Name = va.Name,
              DownFrom = va.DownFrom
          };
              Console.WriteLine(dm.ID + "\t" + dm.Name + "\t" + dm.DownFrom + "\t" + Task.CurrentId);
              }
 
            return dm;
  }     

   public class demo
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string DownFrom { get; set; }
    }

我想要的结果是 两个线程交替运行
0       Text0   中国    1
1       Text1   中国    2
2       Text2   中国    1
3       Text3   中国    2
4       Text4   中国    1
5       Text5   中国    2
6       Text6   中国    1
7       Text7   中国    2
8       Text8   中国    1
9       Text9   中国    2
多线程 ,Task,   线程交替运行 --------------------编程问答-------------------- 菜鸟  初学中  求指教 --------------------编程问答-------------------- --------------------编程问答-------------------- Task的运行结果是异步,你如何控制上一个和下一个是一样的? --------------------编程问答-------------------- 定义全局变量 bool type =true;
第一个线程执行之前加判断 if(type)
{
执行完成后
type=false;
}
第二个线程执行前加判断 if(!type)
{
执行完成后
type=true;
}

这是2个线程同时跑的时候  多线程可以吧bool换成int来判断   --------------------编程问答-------------------- 你必须要这样按一定顺序运行为什么用多线程呢。。一个线程跑不就好了。 --------------------编程问答-------------------- 如果的有规律,无需多线程,只需把内容按照你的输出规则加载到同一个线程 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,