// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System.Reactive.Disposables; namespace System.Reactive.Concurrency { /// /// Scheduler with support for starting long-running tasks. /// This type of scheduler can be used to run loops more efficiently instead of using recursive scheduling. /// public interface ISchedulerLongRunning { /// /// Schedules a long-running piece of work. /// /// The type of the state passed to the scheduled action. /// State passed to the action to be executed. /// Action to be executed. /// The disposable object used to cancel the scheduled action (best effort). /// /// Notes to implementers /// The returned disposable object should not prevent the work from starting, but only set the cancellation flag passed to the specified action. /// IDisposable ScheduleLongRunning(TState state, Action action); } }