我正在为下载管理器设计代码,我想知道异步操作是否有一些众所周知的模式?
我问这个是因为我刚刚开始开发自己的模式。
下载单个文件本身就是一个异步操作,包括开始、停止、暂停、取消、显示进度和速度。下载一个大文件实际上可以下载很多小文件或部分,所以这是一个使用很多子操作的大操作,大操作应该支持启动、停止、暂停、取消,显示进度和速度与子操作完全一致。操作。
下载后,我应该对文件进行哈希验证,这是另一个操作。
你可以看到我需要一种通用的方法来处理所有这些操作......
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();
}