示例#1
0
        static void Main(string[] args)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            GaussMethod gauss = new GaussMethod(num, num);

            gauss.RandomInit(num, num);

            Task <string> rightStringTask  = new Task <string>(() => GaussMethod.ArrayToString(gauss.rightPart));
            Task <string> matrixStringTask = new Task <string>(() => GaussMethod.MatrixToString(gauss.matrix));

            Task[] tasks1 = new Task[2] {
                rightStringTask, matrixStringTask
            };
            for (int i = 0; i < tasks1.Length; i++)
            {
                tasks1[i].Start();
            }
            Task.WaitAll(tasks1);


            Task first  = TextFileHandler.WriteToFile(TextFileHandler.RIGHT_PART_FILE, rightStringTask.Result);
            Task second = TextFileHandler.WriteToFile(TextFileHandler.MATRIX_FILE, matrixStringTask.Result);
            Task third  = TextFileHandler.WriteSizeInfoToFile(TextFileHandler.SIZE_INFO_FILE, gauss);

            Task[] tasks2 = new Task[3] {
                first, second, third
            };

            for (int i = 0; i < tasks2.Length; i++)
            {
                tasks2[i].GetAwaiter().GetResult();
            }
            Task.WaitAll(tasks2);

            GaussMethod gaussMethod = null;

            Task <GaussMethod> info = new Task <GaussMethod>(() => TextFileHandler.ReadSizeInfoFromFile(TextFileHandler.SIZE_INFO_FILE));

            info.Start();
            info.Wait();

            gaussMethod = info.Result;

            Task fouth = TextFileHandler.ReadArraytFromFile(TextFileHandler.RIGHT_PART_FILE, gaussMethod.rightPart);
            Task fifth = TextFileHandler.ReadMatrixFromFile(TextFileHandler.MATRIX_FILE, gaussMethod.matrix);

            Task[] tasks3 = new Task[2] {
                fouth, fifth
            };
            for (int i = 0; i < tasks3.Length; i++)
            {
                tasks3[i].GetAwaiter().GetResult();
            }
            Task.WaitAll(tasks3);

            //Console.WriteLine(GaussMethod.ArrayToString(gaussMethod.rightPart));
            //Console.WriteLine(GaussMethod.MatrixToString(gaussMethod.matrix));

            gaussMethod.SolveMatrix();

            Task sixth = TextFileHandler.WriteToFile(TextFileHandler.RESULT_FILE, GaussMethod.ArrayToString(gaussMethod.result));

            sixth.GetAwaiter().GetResult();

            //Console.WriteLine(gaussMethod.ToString());

            stopwatch.Stop();
            TimeSpan ts          = stopwatch.Elapsed;
            string   elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00000000}",
                                                 ts.Hours, ts.Minutes, ts.Seconds,
                                                 ts.Milliseconds / 10);

            Console.WriteLine("RunTime: " + elapsedTime);

            Console.ReadKey();
        }