IRunnable.cs
30 lines
| 1.0 KiB
| text/x-csharp
|
CSharpLexer
|
|
r152 | using System; | ||
| namespace Implab.Components { | ||||
|
|
r208 | /// <summary> | ||
| /// Interface for the component which performs a long running task. | ||||
| /// </summary> | ||||
| /// <remarks> | ||||
| /// <para>The component also should implement <see cref="IDisposable"/> interface to be able to release used resources.</para> | ||||
| /// <para>All methods of this interface must be a thread safe. If the operation is not applicable in the current state the | ||||
| /// method should throw an exception and keep the current state unchanged.</para> | ||||
| /// </remarks> | ||||
| public interface IRunnable : IDisposable { | ||||
|
|
r203 | /// <summary> | ||
|
|
r208 | /// Starts this instance | ||
|
|
r203 | /// </summary> | ||
|
|
r152 | IPromise Start(); | ||
|
|
r203 | /// <summary> | ||
|
|
r208 | /// Stops this instance, after the instance is stopped it can move to Failed, Ready or Disposed state, in case with the last it can't be reused. | ||
|
|
r203 | /// </summary> | ||
|
|
r152 | IPromise Stop(); | ||
| ExecutionState State { get; } | ||||
|
|
r205 | event EventHandler<StateChangeEventArgs> StateChanged; | ||
|
|
r152 | Exception LastError { get; } | ||
| } | ||||
| } | ||||
