레이블 및 진행률 막대가있는 WPF 폼이 있습니다. 양식이로드 되 자마자 원격 서버에서 다운로드가 시작되지만 양식이 정지되고 올바르게 렌더링되지 않습니다. 마지막 게시물에서 누군가 파일을 다운로드하기 위해 FileAsync를 사용하도록 제안했지만 써드 파티 FTP 라이브러리를 사용하고 있습니다. 이 라이브러리에는 DownloadFileAsync 메서드가 있지만 여전히 폼 고정 문제가 지속됩니다.Notifier 클래스를 사용하여 WPF 폼의 컨트롤 바인딩
또한 DoEvents 함수를 이와 같이 만들었지 만 인터페이스가 중단되지 않습니다.
private void DoEvents()
{
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
new Action(delegate { }));
}
또 다른 접근 방식으로 INotify 유형의 것을 사용하고 있습니다.
(1) 다운로드 파일 방법을 다른 클래스 (예 : DownloaderClass)로 이동하십시오.
(2) MainWindow가로드 될 때 별도의 스레드를 만들고 Downloader 클래스에서 Download 메서드를 호출하십시오.
(3) 다른 클래스 (예 : NotifierClass)를 정적 클래스로 만듭니다.
DownloadedBytes,
CurrentFileName 상기 DownloaderClass에
(4) DownloadFile 방법 NotifierClass의 속성을 계속 업데이트 :이 클래스는 다음과 같은 속성을 포함한다.
MainWindow에 ProgressBar와 몇 개의 레이블 컨트롤을 연결하여 Notifier 클래스의 이러한 속성으로 업데이트를 유지하려고합니다.
이 방법이 효과가 있습니까? NotifierClass가 MainWindow에 상태 업데이트를 보내는 방법?
저는 VS-2010 Express를 사용하고 있습니다.