/// <summary>
        /// Creates a new instance and wires up the pins.
        /// </summary>
        /// <param name="inputPin">Input pin</param>
        /// <returns>Output pin</returns>
        public static Action <T> WireUp(Action <T> inputPin)
        {
            var instance = new SyncContextSwitcher <T>
            {
                Out = inputPin
            };

            return(instance.In);
        }
        /// <summary>
        /// Erstellt eine neue Instanz und verdrahtet damit zwei Pins.
        /// </summary>
        /// <param name="inputPin">Eingangs-Pin</param>
        /// <returns>Ausgangs-Pin</returns>
        public static Action <T> WireUp(Action <T> inputPin)
        {
            // Neue Instanz erzeugen
            SyncContextSwitcher <T> instance = new SyncContextSwitcher <T>();

            // Eingangs-Pin mit Ausgangs-Pin der Instanz verdrahten
            instance.Out = inputPin;

            // Delegat auf Eingangs-Pin der Instanz zurückgeben
            return(new Action <T>(instance.In));
        }