// завершение асинхронного вызова private static void Finish(IAsyncResult result) { try { DelTextMoving dtm = (DelTextMoving)result.AsyncState; dtm.EndInvoke(result); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
// информации об игре (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"); }