Образования и науки российской федерации



Pdf көрінісі
бет34/56
Дата13.03.2023
өлшемі0.74 Mb.
#470699
1   ...   30   31   32   33   34   35   36   37   ...   56
textBox2 
Name 
txbB 
Location 
296; 24 
Text 
4. Создайте делегат: 
private delegate int AsyncSumm(int a, int b); 
5. Создайте метод Summ, в котором будут складываться числа, 
вводимые в два текстовых поля, и укажите задержку операции на 9 секунд: 
private int Summ(int a, int b) 

System.Threading.Thread.Sleep(9000); 
return a+b; 

6. Реализуйте обработчик кнопки btnRun, который будет включать 
также действия по организации асинхронного вызова: 
Создайте экземпляр делегата и проинициализируйте его методом 
Summ: 
AsyncSumm summdelegate = new AsyncSumm(Summ); 
Для использования механизма Сallback создайте экземпляр делегата 
AsyncCallBack: 
AsyncCallback cb = new AsyncCallback(CallBackMethod); 
После того как делегат инициализирован методом, можно запускать 
прикрепленный к делегату метод асинхронно с помощью метода 
BeginInvoke. Этот метод принимает две переменные типа int а и b, 
экземпляр cb делегата AsyncCallback и экземпляр summdelegate делегата 
SummDelegate: 
summdelegate.BeginInvoke(a, b, cb, summdelegate); 
7. В итоге обработчик кнопки btnRun будет выглядеть следующим 
образом: 
private void btnRun_Click(object sender, System.EventArgs e) 

int a, b; 
try 

// Преобразование типов данных. 
a = Int32.Parse(txbA.Text); 
b = Int32.Parse(txbB.Text); 

catch(Exception) 

MessageBox.Show("При выполнении преобразования типов 
возникла ошибка"); 
txbA.Text = txbB.Text = ""; 
return; 



49 
AsyncSumm summdelegate = new AsyncSumm(Summ); 
AsyncCallback cb = new 
AsyncCallback(CallBackMethod); 
summdelegate.BeginInvoke(a, b, cb, summdelegate); 

8. Создайте метод CallBackMethod, который привязан к делегату 
summdelegate: 
private void CallBackMethod(IAsyncResult ar) 

string str; 
AsyncSumm summdelegate = (AsyncSumm)ar.AsyncState; 
str = String.Format("Сумма введенных чисел равна 
{0}", summdelegate.EndInvoke(ar)); 
MessageBox.Show(str, "Результат операции"); 

9. Для демонстрации асинхронности выполнения метода реализуйте 
обработчик нажатия кнопки Работа, например, следующим образом: 
MessageBox.Show("Работа кипит!!!"); 
10. Постройте и запустите приложение. После нажатия кнопки 
Сумма,
пока будет выполняться операция, нажмите кнопку Работа. 
Проверьте, 
что 
метод 
суммирования 
действительно 
реализован 
асинхронно.
Лабораторная работа 8. Повышение удобства использования 
приложений 
Цель работы 
Изучение средств для повышения удобства работы пользователей и 
получение навыков по созданию контекстной справки, всплывающей 
подсказки, а также файлов со справочной информацией. 
Упражнение 1. Создание контекстной справки 
Важной частью любого приложения является понятная и точная 
документация. Снабдить ваше приложение справкой позволяет компонент 
HelpProvider.
1. Откройте Windows-приложение WinAsynchMethod. 
2. Откройте форму в режиме конструктора. 
3. Выберите пункт меню ViewToolBox
4. Добавьте ЭУ HelpProvider на форму. 
5. Выделите поле txbA для отображения ее свойств. 
6. Для свойства HelpString on helpProvider1 задайте значение For 


Достарыңызбен бөлісу:
1   ...   30   31   32   33   34   35   36   37   ...   56




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет