лабараторная работа. Теория_к_лабораторным. 1. Применение параллельных вычислений
Скачать 0.7 Mb.
|
&& _competitor.CheckPoint == 0) { m_Semaphore2000.WaitOne(); try { //Обновление элементов управления в потоке пользовательского интерфейса textBoxDispatchingStatistics.Invoke(new MethodInvoker(() => { textBoxDispatchingStatistics.Text = textBoxDispatchingStatistics.Text + "CP-2000: " + (_competitor.Index + 1).ToString() + " ожидает." + Environment.NewLine; })); //отметка о прохождении семафора 1 _competitor.CheckPoint = 1; Thread.Sleep(2000); //Обновление элементов управления в потоке пользовательского интерфейса textBoxDispatchingStatistics.Invoke(new MethodInvoker(() => { textBoxDispatchingStatistics.Text = textBoxDispatchingStatistics.Text + "CP-2000: " + (_competitor.Index + 1).ToString() + " прошел." + Environment.NewLine; })); } finally { //Гарантированное 'освобождение' семафора m_Semaphore2000.Release(); } } //Вхождение в зону семафора 2 if (_bar.Value > 7000 && _competitor.CheckPoint == 1) { m_Semaphore7000.WaitOne(); try { //Обновление элементов управления в потоке пользовательского интерфейса textBoxDispatchingStatistics.Invoke(new MethodInvoker(() => { textBoxDispatchingStatistics.Text = textBoxDispatchingStatistics.Text + "CP-7000: " + (_competitor.Index + 1).ToString() + " ожидает." + Environment.NewLine; })); //отметка о прохождении семафора 1 _competitor.CheckPoint = 2; Thread.Sleep(2000); //Обновление элементов управления в потоке пользовательского интерфейса textBoxDispatchingStatistics.Invoke(new MethodInvoker(() => { textBoxDispatchingStatistics.Text = textBoxDispatchingStatistics.Text + "CP-7000: " + (_competitor.Index + 1).ToString() + " прошел." + Environment.NewLine; })); } finally { //Гарантированное 'освобождение' семафора m_Semaphore7000.Release(); } } } //Отметка о том, что поток 'финишировал' textBoxDispatchingStatistics.Invoke(new MethodInvoker(() => { textBoxDispatchingStatistics.Text = textBoxDispatchingStatistics.Text + (_competitor.Index + 1).ToString() + " финишировал." + Environment.NewLine; })); } |