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); } }
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); } }
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); } }