2009-11-29 98 views
2

我正在设计一个下载管理器的代码,我想知道是否有一些已知的异步操作模式?Gui异步操作模式?

我在问这是因为我刚开始开发自己的模式。

下载单个文件本身是一个异步操作,具有开始,停止,暂停,取消,显示进度和速度。 下载一个大文件实际上可以下载很多小文件或部件,所以这是一个使用多个子操作的大操作,大操作应该支持启动,停止,暂停,取消,显示进度和速度,并且与子文件完全一致-operations。

下载后,我应该散列文件来验证它,这是另一种操作。

你可以看到,我需要处理所有这些操作的一般方法...

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(); 
} 

回答