Mercurial > pub > ImplabNet
comparison Implab/Components/IAsyncComponent.cs @ 256:c52691faaf21 v3
Removed obsolete App, ComponentContainer
Extracted IAsyncComponent interface
Working on RunnableComponent
| author | cin |
|---|---|
| date | Wed, 11 Apr 2018 03:05:14 +0300 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 255:b00441e04738 | 256:c52691faaf21 |
|---|---|
| 1 using System; | |
| 2 using System.Threading.Tasks; | |
| 3 | |
| 4 namespace Implab.Components { | |
| 5 /// <summary> | |
| 6 /// An interface for asynchronous components. | |
| 7 /// </summary> | |
| 8 /// <remarks> | |
| 9 /// <para> | |
| 10 /// Асинхронные компоненты не предназначены для одновременного использования несколькими клиентами, | |
| 11 /// однако существуют внутренние процессы, изменяющее состояние компонент без участия клиента. | |
| 12 /// Данный интерфейс определяет протокол взаимодействия с компонентой, при которм компоненте | |
| 13 /// посылаются сигналы от клиента, в ответ на которые компонента меняет свойство <see cref="Completion"/>, | |
| 14 /// данное свойство содержит в себе новую задачу, выполняемую компонентой и данное свойство | |
| 15 /// может измениться только при получении нового сигнала от клиента. | |
| 16 /// </para> | |
| 17 /// <para> | |
| 18 /// В дополнение к <see cref="Completion"/> компонента может определять другие свойства, в | |
| 19 /// которых будет передаваться информация о результате выполнения операции. | |
| 20 /// </para> | |
| 21 /// <para> | |
| 22 /// Особое внимание следует уделить реализации <see cref="IDisposable"/>, который по своей природе | |
| 23 /// синхронный, данное правило безусловно можно нарушить, но тогда могут возникнуть проблемы с | |
| 24 /// тем, что ресурсы еще не освободились, а ход программы продолжается, что приведет к ошибкам, | |
| 25 /// например при попытке получить ресуср другим объектом, либо при заврешении программы. | |
| 26 /// </para> | |
| 27 /// <seealso href="https://blog.stephencleary.com/2013/01/async-oop-0-introduction.html"/> | |
| 28 /// </remarks> | |
| 29 public interface IAsyncComponent { | |
| 30 /// <summary> | |
| 31 /// The result of the last started operation. This property reflects | |
| 32 /// only the result of the last started operation and therefore should | |
| 33 /// change only if a new operation is initiated. | |
| 34 /// </summary> | |
| 35 Task Completion { get; } | |
| 36 } | |
| 37 } |
