ダウンロード マネージャーのコードを設計していますが、非同期操作の既知のパターンがいくつかあるのではないかと考えていました。
私は自分のパターンを開発し始めたばかりなので、これを求めています。
単一ファイルのダウンロード自体は、開始、停止、一時停止、キャンセルを伴う非同期操作であり、進行状況と速度が表示されます。1 つの大きなファイルをダウンロードすると、実際には多くの小さなファイルまたはパーツをダウンロードできるため、これは多くのサブ操作を使用する 1 つの大きな操作であり、大きな操作は開始、停止、一時停止、キャンセルをサポートし、進行状況と速度をサブ操作と完全に一貫して表示する必要があります。オペレーション。
ダウンロード後、ファイルをハッシュして検証する必要がありますが、これは別の操作です。
これらすべての操作を処理する一般的な方法が必要であることがわかります...
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();
}