IRunnable.cs
30 lines
| 1.0 KiB
| text/x-csharp
|
CSharpLexer
cin
|
r152 | using System; | ||
namespace Implab.Components { | ||||
cin
|
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 { | ||||
cin
|
r203 | /// <summary> | ||
cin
|
r208 | /// Starts this instance | ||
cin
|
r203 | /// </summary> | ||
cin
|
r152 | IPromise Start(); | ||
cin
|
r203 | /// <summary> | ||
cin
|
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. | ||
cin
|
r203 | /// </summary> | ||
cin
|
r152 | IPromise Stop(); | ||
ExecutionState State { get; } | ||||
cin
|
r205 | event EventHandler<StateChangeEventArgs> StateChanged; | ||
cin
|
r152 | Exception LastError { get; } | ||
} | ||||
} | ||||