using System;
using System.Threading.Tasks;
namespace Swan.Threading {
///
/// Defines a standard API to control background application workers.
///
public interface IWorker {
///
/// Gets the current state of the worker.
///
WorkerState WorkerState {
get;
}
///
/// Gets a value indicating whether this instance is disposed.
///
///
/// true if this instance is disposed; otherwise, false.
///
Boolean IsDisposed {
get;
}
///
/// Gets a value indicating whether this instance is currently being disposed.
///
///
/// true if this instance is disposing; otherwise, false.
///
Boolean IsDisposing {
get;
}
///
/// Gets or sets the time interval used to execute cycles.
///
TimeSpan Period {
get; set;
}
///
/// Gets the name identifier of this worker.
///
String Name {
get;
}
///
/// Starts execution of worker cycles.
///
/// The awaitable task.
Task StartAsync();
///
/// Pauses execution of worker cycles.
///
/// The awaitable task.
Task PauseAsync();
///
/// Resumes execution of worker cycles.
///
/// The awaitable task.
Task ResumeAsync();
///
/// Permanently stops execution of worker cycles.
/// An interrupt is always sent to the worker. If you wish to stop
/// the worker without interrupting then call the
/// method, await it, and finally call the method.
///
/// The awaitable task.
Task StopAsync();
}
}