2017-09-12 1 views
0

CefSharp로 웹 사이트 용 작은 다운로더 도구를 만들려고합니다. 파일을 다운로드하려면 CefSharp의 꽤 좋은 예제 인 DownloadHandler를 사용합니다. 이제 다운로드가 끝나면 몇 가지 작업을 수행하려고합니다. "downloadItem"의 값은 "IsComplete"입니다. 내가 방법 "을 OnDownloadUpdated"는이 같은 것을 넣어하지만, 물건은 내 다운로드 항목이 완료되었는지 확인해야 할 경우 내 질문입니다, 그래서 CefSharp에서 다운로드를 완료하십시오.

 if (downloadItem.IsComplete) { 
      //do stuff 
     } 

실행되지 않습니다?

편집 : 전체 DownloadHandler : 당신은 OnDownloadUpdated 방법 내부를 확인해야

public class DownloadHandler : IDownloadHandler { 

    public event EventHandler<DownloadItem> OnBeforeDownloadFired; 
    public event EventHandler<DownloadItem> OnDownloadUpdatedFired; 
    private bool stop; 
    private DownloadWindow window; 

    public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) { 
     var handler = OnBeforeDownloadFired; 
     if (handler != null) { 
      handler(this, downloadItem); 
     } 

     if (!callback.IsDisposed) { 
      using (callback) { 
       callback.Continue(downloadItem.SuggestedFileName, showDialog: true); 
      } 
     } 
     window = new DownloadWindow(downloadItem.TotalBytes, downloadItem.SuggestedFileName, this); 
     window.Show(); 
    } 

    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { 
     var handler = OnDownloadUpdatedFired; 
     if (handler != null) { 
      handler(this, downloadItem); 
     } 

     if (window != null) { 
      window.UpdateProgress(downloadItem.ReceivedBytes); 
     } 

     if (stop) { 
      callback.Cancel(); 
     } 
    } 

    public void StopDownload() { 
     stop = true; 
    } 
} 
+0

전체'DownloadHandler'를 (를) 공유 할 수 있습니까? –

+0

@ NicolasZawada 예, 그랬어요 – Mirco

답변

1

.

public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) 
{ 

    if (downloadItem.IsComplete || downloadItem.IsCancelled) 
     { 
     //do stuff 
     } 
} 

클래스는 IDownloadHandler 인터페이스를 구현해야합니다. 좋은 디버깅 전략은이 메서드 내부에 중단 점을 배치하여 해고 시점을보고 이해합니다.

+0

매우 흥미로운 행동이 있습니다. 처음 다운로드가 끝나면 물건은 실행되지 않지만 그 이후에는 항상 실행됩니다. 지연된주기와 같습니다. – Mirco

+0

그리고 지금이 행동이 사라지면 마술을합니다. – Mirco

관련 문제