Gui异步操作模式?

时间:2009-11-29 21:52:34

标签: c# .net user-interface asynchronous 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();
}

1 个答案:

答案 0 :(得分:0)

模型 - 视图 - 控制器(MVC):http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 这是以适当的方式设计GUI的模式。