Вы должны проверить, что обработчик события OnLoaded
не null
, прежде чем вызывать его:
LoadedHandler handler = OnLoaded;
if (handler != null)
{
handler(this, new FileManagerArgs("no errors"));
}
Вам нужно будет делать это каждый раз, когда вы вызываете обработчик события. Локальная переменная handler
, указанная выше, предназначена для отслеживания случая, когда вы можете проверить, что обработчик не равен NULL, но что-то удаляет обработчик перед его вызовом. Создание локальной переменной захватывает обработчик, чтобы предотвратить это.
Альтернативный подход состоит в том, чтобы определить обработчик событий как:
public event LoadedHandler OnLoaded = delegate{};
Здесь объявляется пустой обработчик событий по умолчанию, что делает ненужной проверку нуля (хотя при таком подходе наблюдается небольшая потеря производительности).