Я разрабатываю код для менеджера загрузки, и мне было интересно, есть ли какие-то хорошие шаблоны для асинхронных операций?Gui асинхронный режим работы?
Я спрашиваю об этом, потому что я только начал разрабатывать свой собственный узор.
Загрузка одного файла - это операция async с запуском, остановкой, приостановкой, отменой, отображением прогресса и скорости. Загрузите один большой файл, на самом деле загрузите много мелких файлов или частей, так что это одна большая операция, которая использует множество вспомогательных операций, и большая операция должна поддерживать запуск, остановку, приостановку, отмену, отображение прогресса и скорости с полной согласованностью с подпунктом -операций.
После загрузки я должен сохранить файл, чтобы проверить его, и это еще одна операция.
Вы можете видеть, что я нужен общий способ для обработки всех этих операций ...
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();
}
MVC - хорошая идея в целом, но я не думаю, что это то, что означает DxCK. Ссылка ничего не говорит о написании многопоточного графического интерфейса. –