Esempio n. 1
0
 //Split workboolinfo list into two parts and generate two tasks into the queue
 private void EnqueuePageCountSizeTask(IEnumerable <WorkbookInfo> workbookInfos)
 {
     if (workbookInfos.Count() > 1)
     {
         var workbookSplits = workbookInfos.Split(2);
         var task1          = new Task(() =>
         {
             var t = GetPageCountAndSize(ExcelPageCountSize1, workbookSplits.ElementAt(0));
             t.Wait();
         });
         var task2 = new Task(() =>
         {
             var t = GetPageCountAndSize(ExcelPageCountSize2, workbookSplits.ElementAt(1));
             t.Wait();
         });
         PageSizeCountTaskQueue1.Enqueue(task1);
         PageSizeCountTaskQueue2.Enqueue(task2);
     }
     else
     {
         var task1 = new Task(() =>
         {
             var t = GetPageCountAndSize(ExcelPageCountSize1, workbookInfos);
             t.Wait();
         });
         PageSizeCountTaskQueue1.Enqueue(task1);
     }
 }
Esempio n. 2
0
        //Execute queue
        private void ExecuteQueue()
        {
            if (!Task1Runing)
            {
                Task.Run(() =>
                {
                    while (PageSizeCountTaskQueue1.Count > 0)
                    {
                        Task1Runing = true;
                        Task t;
                        if (PageSizeCountTaskQueue1.TryDequeue(out t))
                        {
                            t.Start();
                            t.Wait();
                        }
                    }
                    Task1Runing = false;
                });
            }

            if (!Task2Runing)
            {
                Task.Run(() =>
                {
                    while (PageSizeCountTaskQueue2.Count > 0)
                    {
                        Task2Runing = true;
                        Task t;
                        if (PageSizeCountTaskQueue2.TryDequeue(out t))
                        {
                            t.Start();
                            t.Wait();
                        }
                    }
                    Task2Runing = false;
                });
            }
        }