Ejemplo n.º 1
0
        /// <summary>
        /// Aktiviert den primä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 TryPrimary(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.PrimaryViewVisibilityChanged += signal;
                try
                {
                    // Process
                    var started = feedSet.TryStartPrimaryFeed(sourceName);

                    // Synchronize
                    if (started)
                    {
                        Assert.IsTrue(waiter.WaitOne(1000), "timeout");
                    }

                    // Report
                    return(started);
                }
                finally
                {
                    // Detach waiter
                    feedSet.PrimaryViewVisibilityChanged -= signal;
                }
            }
        }