我试着做一个小的下载工具,一个网站与CefSharp。对于下载文件,我使用了来自CefSharp的非常好的示例CefSharp。现在,我想在下载完成后做一些事情。我知道"downloadItem“有一个"IsComplete”值。但是,如果我把这样的东西放在"OnDownloadUpdated“方法中,就永远不会执行
if (downloadItem.IsComplete) {
//do stuff
}所以,我的问题是,在哪里我要检查我的下载项目是否完成?
编辑:完成DownloadHandler:
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;
}
}发布于 2017-09-12 11:23:08
您需要在OnDownloadUpdated方法中检查它。
public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
{
if (downloadItem.IsComplete || downloadItem.IsCancelled)
{
//do stuff
}
}不要忘记,您的类必须实现IDownloadHandler接口。一种很好的调试策略是在此方法中放置断点,以查看/理解何时触发断点。
https://stackoverflow.com/questions/46174834
复制相似问题