コード例 #1
0
 /// <summary>
 /// threaded io
 /// </summary>
 public virtual void QueueIO(IThreadedFileIO par1IThreadedFileIO)
 {
     if (ThreadedIOQueue.Contains(par1IThreadedFileIO))
     {
         return;
     }
     else
     {
         WriteQueuedCounter++;
         ThreadedIOQueue.Add(par1IThreadedFileIO);
         return;
     }
 }
コード例 #2
0
        /// <summary>
        /// Process the items that are in the queue
        /// </summary>
        private void ProcessQueue()
        {
            for (int i = 0; i < ThreadedIOQueue.Count; i++)
            {
                IThreadedFileIO ithreadedfileio = ThreadedIOQueue[i];
                bool            flag            = ithreadedfileio.WriteNextIO();

                if (!flag)
                {
                    ThreadedIOQueue.RemoveAt(i--);
                    SavedIOCounter++;
                }

                try
                {
                    if (!IsThreadWaiting)
                    {
                        Thread.Sleep(10);
                    }
                    else
                    {
                        Thread.Sleep(0);
                    }
                }
                catch (ThreadInterruptedException interruptedexception1)
                {
                    Console.WriteLine(interruptedexception1.ToString());
                    Console.WriteLine();
                }
            }

            if (ThreadedIOQueue.Count == 0)
            {
                try
                {
                    Thread.Sleep(25);
                }
                catch (ThreadInterruptedException interruptedexception)
                {
                    Console.WriteLine(interruptedexception.ToString());
                    Console.WriteLine();
                }
            }
        }