2
다운로드 관리자 용 코드를 설계하고 있는데 비동기 작업에 대한 알려진 패턴이 있는지 궁금합니다.Gui 비동기 작업 패턴?
나는 내 자신의 패턴을 개발하기 시작했기 때문에 이것을 묻습니다.
다운로드 하나의 파일 자체는 시작, 중지, 일시 중지, 취소, 진행률 및 속도를 보여주는 비동기 작업입니다. 하나의 큰 파일을 다운로드하면 실제로 많은 작은 파일이나 부품을 다운로드 할 수 있으므로 많은 하위 작업을 사용하는 큰 작업이며 큰 작업은 시작, 중지, 일시 중지, 취소, 진행률 및 속도 표시를 하위와 완전히 일치시켜야합니다 - 수술.
다운로드가 끝나면 파일을 해시하여 유효성을 검사해야하며 이는 다른 작업입니다.
당신은 내가 그 모든 작업을 처리 할 수있는 일반적인 방법이 필요하다는 것을 알 수...
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의 의미는 아닙니다. 링크는 멀티 스레드 GUI를 작성하는 것에 대해 아무런 언급도하지 않습니다. –