когда у события есть несколько подписчиков, как я могу получить возвращаемое значение для каждого подписчика?

Код выглядит следующим образом:

Часы:

public class Clock
{
    public event Func SecondChange;

    public void Run()
    {
        for (var i = 0; i < 20; i++)
        {
            Thread.Sleep(1000);

            if (SecondChange != null)
            {
                //how do I get return value for each subscriber?
                Console.WriteLine(SecondChange(DateTime.Now));
            }
        }
    }
}

DisplayClock:

public class DisplayClock
{
    public static bool TimeHasChanged(DateTime now)
    {
        Console.WriteLine(now.ToShortTimeString() + " Display");
        return true;
    }
}

LogClock:

public class LogClock
{
    public static bool WriteLogEntry(DateTime now)
    {
        Console.WriteLine(now.ToShortTimeString() + " Log");
        return false;
    }
}

Чтобы запустить код:

var theClock = new Clock();
theClock.SecondChange += DisplayClock.TimeHasChanged;
theClock.SecondChange += LogClock.WriteLogEntry;
theClock.Run();

Другие вопросы:

Это хорошая практика для каждого подписчика, чтобы вернуть значение?Является ли хорошей практикой просто объявлять Action / Func как тип возвращаемого события вместо того, чтобы вручную объявлять делегат?

Ответы на вопрос(2)

Ваш ответ на вопрос