/// <summary> /// Aktiviert einen sekundären Sender. /// </summary> /// <param name="feedSet">Die Verwaltung der Sender.</param> /// <param name="sourceName">Der Name einer Quelle.</param> /// <returns>Gesetzt, wenn der Sender aktiviert wurde.</returns> public static bool TrySecondary(this IFeedSet feedSet, string sourceName) { // Synchronize using (var waiter = new ManualResetEvent(false)) { // Waiter method Action <IFeed, bool> signal = (feed, visible) => { if (visible) { waiter.Set(); } }; // Attach wait method feedSet.SecondaryViewVisibilityChanged += signal; try { // Process var started = feedSet.TryStartSecondaryFeed(sourceName); // Synchronize if (started) { Assert.IsTrue(waiter.WaitOne(1000), "timeout"); } // Report return(started); } finally { // Detach waiter feedSet.SecondaryViewVisibilityChanged -= signal; } } }
/// <summary> /// Aktiviert eine Aufzeichnung. /// </summary> /// <param name="feedSet">Die Verwaltung der Sender.</param> /// <param name="sourceName">Der Name einer Quelle.</param> /// <param name="key">Die Identifikation der Aufzeichnung.</param> /// <returns>Gesetzt, wenn der Sender aktiviert wurde.</returns> public static bool TryRecord(this IFeedSet feedSet, string sourceName, string key) { // Synchronize using (var waiter = new ManualResetEvent(false)) { // Waiter method Action <IFeed, string, bool> signal = (feed, rec, start) => { if (start && (rec == key)) { waiter.Set(); } }; // Attach wait method feedSet.RecordingStateChanged += signal; try { // Process var started = feedSet.TryStartRecordingFeed(sourceName, key); // Synchronize if (started) { Assert.IsTrue(waiter.WaitOne(1000), "timeout"); } // Report return(started); } finally { // Detach waiter feedSet.RecordingStateChanged -= signal; } } }