##// END OF EJS Templates
Fixed promise rejection when there is not specified error handler in the reaction....
Fixed promise rejection when there is not specified error handler in the reaction. FIXED SPELLING IN THE XML CONTAINER CONFIGURATION signleton->singleton Code cleanup Update tests make them working on dotnet core

File last commit:

r289:95896f882995 v3.0.14 v3
r295:28af686e24f7 default
Show More
IAsyncComponent.cs
36 lines | 2.6 KiB | text/x-csharp | CSharpLexer
using System;
using System.Threading.Tasks;
namespace Implab.Components {
/// <summary>
/// An interface for asynchronous components.
/// </summary>
/// <remarks>
/// <para>
/// Асинхронные компоненты не предназначены для одновременного использования несколькими клиентами,
/// однако существуют внутренние процессы, изменяющее состояние компонент без участия клиента.
/// Данный интерфейс определяет протокол взаимодействия с компонентой, при которм компоненте
/// посылаются сигналы от клиента, в ответ на которые компонента меняет свойство <see cref="Completion"/>,
/// данное свойство содержит в себе новую задачу, выполняемую компонентой и данное свойство
/// может измениться только при получении нового сигнала от клиента.
/// </para>
/// <para>
/// В дополнение к <see cref="Completion"/> компонента может определять другие свойства, в
/// которых будет передаваться информация о результате выполнения операции.
/// </para>
/// <para>
/// Особое внимание следует уделить реализации <see cref="IDisposable"/>, который по своей природе
/// синхронный, данное правило безусловно можно нарушить, но тогда могут возникнуть проблемы с
/// тем, что ресурсы еще не освободились, а ход программы продолжается, что приведет к ошибкам,
/// например при попытке получить ресуср другим объектом, либо при заврешении программы.
/// </para>
/// <seealso href="https://blog.stephencleary.com/2013/01/async-oop-0-introduction.html"/>
/// </remarks>
public interface IAsyncComponent {
/// <summary>
/// The result of the last started operation. This property reflects
/// only the result of the last started operation and therefore should
/// change only if a new operation is initiated.
/// </summary>
Task Completion { get; }
}
}