ВУЗ:
Составители:
Рубрика:
85
ет, что экземпляр события не может быть вызван в других клас-
сах). Объявление события выполняется следующим образом:
рublic event <имя_делегата> <имя_события>;
Ниже приведен пример объявления делегата и события, пред-
ставляющего экземпляр этого делегата:
// Объявление делегата - новый тип данных
public delegate void MyHandler(object o, int n);
// Объявление события класса – экземпляр делегата
public event MyHandler MyEvent;
Для инициирования события требуется просто вызвать на выпол-
нение экземпляр делегата. Например:
// проверка, что для события заданы обработчики
if (MyEvent != null)
MyEvent(this, i); // запускаем событие
Ниже приведен пример описания класса, в котором содержится
метод, выполнение которого занимает достаточно долгое время. Дан-
ный метод сообщает о выполнении каждой десятой доли своей работы.
Объекты, использующие данный метод могут визуально информировать
пользователей о ходе выполнения работы в данном методе.
// Объявление нового типа – делегата с параметрами:
//o – ссылка на объект, который инициировал событие
//n – процент выполненной работы
public delegate void MyHandler (object o, int n);
// объявление класса с событием
public class ClassWithEvent{ // класс с событием
// Создание экземпляра делегата - событие
public event MyHandler MyEvent;
// поле класса
private int Volume = 0;
// конструктор класса – парамер – объем работы
public EventClass(int p){if (p > 0) Volume = p;}
//описание метода выполняющего долгую работу
//(но в данном примере бессмысленную)
public void LongWork(){
double s = 0; int k = 0;
int st = Volume / 10; // десятая часть работы
for (int i = 0; i < Volume; i++) {
s += Math.Atan(Math.Sqrt(i) * Math.Sqrt(i));
if (k == st){// выполнена заданная часть работы
if (MyEvent != null){
int n = (int)(i*100.0)/Volume;
MyEvent(this, n); // запускаем событие
Страницы
- « первая
- ‹ предыдущая
- …
- 83
- 84
- 85
- 86
- 87
- …
- следующая ›
- последняя »