Ejemplo n.º 1
0
        /// <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;
                }
            }
        }
Ejemplo n.º 2
0
        /// <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;
                }
            }
        }