Exemple #1
0
        void run()
        {
            SortedSet <bsdata> bytestowrite;

            try
            {
                // пока есть данные
                while ((bytestowrite = bigsortwriter.GetWrite()) != null)
                {
                    using (file_out = new StreamWriter("bsort" + bigsortwriter.GetNextFileNumber()))
                    {
                        foreach (bsdata el in bytestowrite)
                        {
                            file_out.WriteLine(el.ToString());
                        }
                        file_out.Flush();
                        file_out.Close();
                    }
                }
                resultOK = true;
                isDone   = true;
                bigsortwriter.Done(true);
            }
            catch (IOException)
            {
                resultOK = false;
                isDone   = true;
                bigsortwriter.Done(false);
            }
        }
Exemple #2
0
        public void DoRead()
        {
            string bytestoread;

            /// чтение исходного файла кусками; каждый кусок в отдельном потоке сжимается
            try
            {
                using (StreamReader file_in = new StreamReader(filename_in))
                {
                    while ((bytestoread = file_in.ReadLine()) != null)
                    {
                        // отдаем порцию в очередь
                        sortQueue.PutRead(bytestoread);
                    }
                }
                done = true;
                ok   = true;
                sortQueue.ReadDone();
                sortQueue.Done(true);
            }
            catch
            {
                done = true;
                ok   = false;
                sortQueue.Done(false);
            }
        }
Exemple #3
0
 void run()
 {
     try
     {
         // пока есть что сжимать
         while ((indata = bsqueue.GetRead()) != null)
         {
             outdata.Add(new bsdata(indata, fn));
             fn++;
             if (fn >= bsqueue.GetLineCount())
             {
                 // отдаем данные в другую очередь
                 fn = 0;
                 bsqueue.PutWrite(outdata);
                 outdata = new SortedSet <bsdata>();
             }
         }
         if (outdata.Count > 0)
         {
             bsqueue.PutWrite(outdata);
         }
         Ok     = true;
         isDone = true;
         bsqueue.Done(true);
     }
     catch
     {
         Ok     = false;
         isDone = true;
         bsqueue.Done(false);
     }
 }