コード例 #1
0
ファイル: Device.cs プロジェクト: yunusalam/DVB.NET---VCR.NET
        /// <summary>
        /// Stellt den Empfang einer Quelle sicher.
        /// </summary>
        /// <param name="source">Die gewünschte Quelle.</param>
        public void EnsureFeed(SourceSelection source)
        {
            // Unregister all outstanding requests
            ResetFeeds();

            // Stop current reader if active - and wait for cancel to finish
            if (m_groupReader != null)
            {
                m_groupReader.Cancel();
                m_groupReader.Wait();
            }

            // Create new
            m_groupReader = ProviderDevice.Activate(source);
            m_feeds       = _NoFeeds;

            // Start processing
            m_feedAwaiter = m_groupReader.ContinueWith(task =>
            {
                // Load feed data
                var sources = task.Result;
                if (sources != null)
                {
                    if (IsAllocated)
                    {
                        return(m_feeds = sources.Select(sourceOnGroup => new Feed(sourceOnGroup, this)).ToArray());
                    }
                }

                // None
                return(null);
            });
        }
コード例 #2
0
        /// <summary>
        /// Beendet die Nutzung dieses Senders.
        /// </summary>
        public void RefreshSourceInformation()
        {
            if (m_reader != null)
            {
                m_reader.Cancel();
                m_reader.Wait();
            }

            m_reader = null;
        }
コード例 #3
0
    static void Main(string[] args)
    {
        Guid lastID = default(Guid);
        List <CancellableTask> cancellableTasks = new List <CancellableTask>();

        for (int i = 0; i < 10; i++)
        {
            CancellableTask task = new CancellableTask(() =>
            {
                Console.WriteLine("New task!");
                Thread.Sleep(3000);
            });
            cancellableTasks.Add(task);
            lastID = task.ID;
        }
        CancellableTask cancellableTask = cancellableTasks.FirstOrDefault(x => x.ID == lastID);

        if (cancellableTask != null)
        {
            cancellableTask.Cancel();
        }
    }
コード例 #4
0
 private void StopTask(CancellableTask _task)
 {
     _task.Cancel();
     _task.WaitForFinished();
     _task.Dispose();
 }