예제 #1
0
 // завершение асинхронного вызова
 private static void Finish(IAsyncResult result)
 {
     try
     {
         DelTextMoving dtm = (DelTextMoving)result.AsyncState;
         dtm.EndInvoke(result);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
예제 #2
0
        // информации об игре (HELP)
        private static void AsyncShowHelp()
        {
            // текст, который будет выезжать
            string strHelp1 = "Игра БОЙ ТАНКОВ представляет из себя: ";
            string strHelp2 = "  - два танка, расположенных друг напротив друга ";
            string strHelp3 = "  - движения совершаются паралельно друг другу ";
            string strHelp4 = "  - каждый из танков имеет возможность стрелять перед собой ";
            string strHelp5 = "  - выигрывает тот, кто нанесет большее кол-во урона оппоненту ";

            // настраиваем метод
            DelTextMoving dtm = Game.TextMoving;

            // начальная позиция номера строки вывода текста
            int iStartPos = 9;

            // асинхронные вызовы строк HELP'a
            IAsyncResult text1 = dtm.BeginInvoke(strHelp1, iStartPos, Finish, dtm);
            IAsyncResult text2 = dtm.BeginInvoke(strHelp2, ++iStartPos, Finish, dtm);
            IAsyncResult text3 = dtm.BeginInvoke(strHelp3, ++iStartPos, Finish, dtm);
            IAsyncResult text4 = dtm.BeginInvoke(strHelp4, ++iStartPos, Finish, dtm);
            IAsyncResult text5 = dtm.BeginInvoke(strHelp5, ++iStartPos, Finish, dtm);

            // дожидаемся конца движения текста
            WaitHandle.WaitAll(
                new[] {
                text1.AsyncWaitHandle,
                text2.AsyncWaitHandle,
                text3.AsyncWaitHandle,
                text4.AsyncWaitHandle,
                text5.AsyncWaitHandle,
            });

            // пропуск заставки уже не актуален, и уже ожидание не требуется
            Game.mreSingle.Set();

            Console.WriteLine("\n\n\n\n");
        }