Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление анонимного делегата

474
24 февраля 2007 года
tray_gator
101 / / 22.07.2003
Изучаю C#, возник вопрос:
Я добавляю анонимный callback к eventу:

 
Код:
someObject.OnSomeEventComplete += delegate(object obj, EventArgs ea) {
// Do something
};


Какой наиболее рациональный способ чтобы по завершению выполнения "Do something"...этот анонимный делегат удалился бы от eventа?
474
24 февраля 2007 года
tray_gator
101 / / 22.07.2003
т.е. объясню зачем мне это нужно:
у меня есть класс DB по работе с БД
чтобы выполнить какое-либо действие связонное с удаленной базой данных, я хочу делать так:
 
Код:
private void someMethod()
{
      DB.ConnectASync();
      DB.OnConnect += delegate() {
              // код...код...код
              // действия по удаленю делегата
      }
}

т.е. я хочу удалить только тот делегат который делается в том Method е.
Или как вообще решить проблему, что часто надо что-то делать сетевое в новом threadе ... и каждый раз использовать для этого новый Thread не хочется, т.к. можно обойтись одим который делает соединение с БД. Или как вообще решаются подобные задачи (а то я уже запутался в то что я хочу :D )?
273
24 февраля 2007 года
3A3-968M
1.2K / / 22.12.2005
 
Код:
[SIZE=2][COLOR=#008080][FONT=Courier New]Button[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] btn = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2] [/SIZE][SIZE=2][COLOR=#008080]Button[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]();[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]EventHandler[/COLOR][/SIZE][SIZE=2] handler = [/SIZE][SIZE=2][COLOR=#0000ff]null[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT]
[FONT=Courier New]handler = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]delegate[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#0000ff]object[/COLOR][/SIZE][SIZE=2] sender, [/SIZE][SIZE=2][COLOR=#008080]EventArgs[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] e)[/FONT]
[FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]  MessageBox[/COLOR][/SIZE][SIZE=2].Show([/SIZE][SIZE=2][COLOR=#800000]"Hello, world"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT]
[FONT=Courier New]  btn.Click -= handler;[/FONT]
[FONT=Courier New]};[/FONT]
[FONT=Courier New]btn.Click += handler;[/FONT]
[/SIZE][FONT=Courier New]
[/FONT]
474
24 февраля 2007 года
tray_gator
101 / / 22.07.2003
спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог