делегат с эвентом и без - чем отличаются?
ну почему же нет? Даже Майкрософт в Windows.Forms использует евенты не только для уведомления, но и для опроса подписчиков. Пример тому напр. такие:
delegate void FormClosingEventHandler(object sender, FormClosingEventArgs e);
event FormClosingEventHandler FormClosing;
delegate void KeyEventHandler(object sender, KeyEventArgs e);
event KeyEventHandler KeyDown;
Просто здесь реакция подписчика возвращается через аргумент:
FormClosingEventArgs.Cancel
KeyEventHandler.Handled
Но в этом подходе есть однин недостаток: второй пописчик может перетереть решение предыдущего. А вот в предложенном мной выше решении (использовать Функцию вместо Экшина) этого недостатка нет. Правда, чуть больше кода писать надо. (Впрочем тоже самое можно написать и с Экшинами, а не функциями, но функции по-моему все же лучше)