Gui шаблон асинхронных операций? - PullRequest
2 голосов
/ 30 ноября 2009

Я разрабатываю код для менеджера загрузок, и мне было интересно, есть ли какие-нибудь хорошие известные шаблоны для асинхронных операций?

Я спрашиваю об этом, потому что я только начал разрабатывать свой собственный шаблон.

Загрузка одного файла сама по себе является асинхронной операцией со стартом, остановкой, паузой, отменой, отображением прогресса и скорости. Загрузка одного большого файла может фактически загрузить много маленьких файлов или частей, так что это одна большая операция, которая использует много подопераций, и эта большая операция должна поддерживать запуск, остановку, паузу, отмену, отображение прогресса и скорости при полном соответствии с подпрограммой. операции.

После загрузки я должен хэшировать файл для его проверки, и это еще одна операция.

Вы видите, что мне нужен общий способ обработки всех этих операций ...

public interface IOperation
{
    event EventHandler<StateEventArgs> StartRequested;
    event EventHandler<StateEventArgs> Started;
    event EventHandler<ProgressEventArgs> ProgressChanged;
    event EventHandler<SpeedEventArgs> SpeedChanged;
    event EventHandler<StateEventArgs> PauseRequested;
    event EventHandler<StateEventArgs> Paused;
    event EventHandler<StateEventArgs> ContinueRequested;
    event EventHandler<StateEventArgs> Continued;
    event EventHandler<StateEventArgs> CancelRequested;
    event EventHandler<StateEventArgs> Cancelled;
    event EventHandler<StateEventArgs> Completed;
    event EventHandler<ExceptionEventArgs> WarningErrored;
    event EventHandler<ExceptionEventArgs> FatalErrored;

    OperationState OperationState { get; }
    ISynchronizeInvoke Invokable { get; set; }
    object State { get;set; }

    void StartAsync();
    void StartAsync(params object[] args);
    void StartSync();
    void StartSync(params object[] args);
    void Pause();
    void Continue();
    void Cancel();
}

1 Ответ

0 голосов
/ 30 ноября 2009

Модель-Вид-Контроллер (MVC): http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller Это шаблон для правильного проектирования графического интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...