Как я реализую отменяемое событие?

Проблема заключалась в том, что «введите:» часть. Это не должно было быть там. Я удалил это .. и это работало просто отлично.

9
задан Simon 17 November 2008 в 10:20
поделиться

1 ответ

Для проверки каждого слушателя в свою очередь необходимо вручную получить обработчики через GetInvocationList:

class Foo
{
    public event CancelEventHandler Bar;

    protected void OnBar()
    {
        bool cancel = false;
        CancelEventHandler handler = Bar;
        if (handler != null)
        {
            CancelEventArgs args = new CancelEventArgs(cancel);
            foreach (CancelEventHandler tmp in handler.GetInvocationList())
            {
                tmp(this, args);
                if (args.Cancel)
                {
                    cancel = true;
                    break;
                }
            }
        }
        if(!cancel) { /* ... */ }
    }
}
16
ответ дан 4 December 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: