Краткий способ безопасного вызова события в .Net - PullRequest
1 голос
/ 21 апреля 2011

Существует ли краткий способ безопасного вызова событий в C # .Net. Я хотел бы безопасно иметь дело без подписчиков и исключения, которые могут выбрасывать подписчики ...

Я хотел бы использовать метод TryInvoke для Delegate ... там, где я мог бы также передать обработчик исключений. Я нахожусь в .Net 3.5, поэтому нет методов расширения ...

В любом случае, вот пример, который я обычно использую.

    void fireListChanged(List<string> paths)
    {             
        try
        {
            if (ListChanged != null)
            {
                ListChanged(paths);
            }
        }
        catch (System.Exception ex)
        {
            m_output.write(ex);
        }
    }

    public event ListStringChangedDlgt ListChanged;

1 Ответ

3 голосов
/ 21 апреля 2011

Просто используйте шаблон = delegate {}. Преимущество по сравнению с вашим решением в том, что оно безопасно для потоков.

void fireListChanged(List<string> paths)
{             
    try
    {
            ListChanged(paths);
    }
    catch (System.Exception ex)
    {
        m_output.write(ex);
    }
}

public event ListStringChangedDlgt ListChanged = delegate {};

Я также рекомендую использовать EventHandler или EventHandler<YourEventArgClass> в качестве делегата для события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...