Как отменить загрузку внутри DownloadHandler с помощью Cefsharp - PullRequest
0 голосов
/ 01 августа 2020

Откройте файл pdf, нажмите кнопку загрузки, загрузка начнется, потому что я реализовал интерфейс IDownloadHandler в качестве предлагаемого исходного кода (callback.Continue).

Я хочу заменить процесс загрузки своим собственным, Я просто хочу знать, когда нажимается кнопка щелчка, поэтому я пишу ниже код в OnBeforeDownload:

    downloadItem.IsCancelled = true;
    if (!callback.IsDisposed)
    {
        using (callback)
        {
            callback.Dispose();
            //callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
        }
    }

Но функция OnDownloadUpdated все еще вызывается периодически, означает ли это, что процесс загрузки все еще продолжается, как отменить процесс загрузки? спасибо!

Примечание: я использую Cefsharp.Winforms, версия 81.3.100.0, моя операционная система Windows 10, Visual Studio 2019.

===========================================
public class PDFDownloadHandler : IDownloadHandler
{
    public event EventHandler<DownloadItem> OnBeforeDownloadFired;

    public event EventHandler<DownloadItem> OnDownloadUpdatedFired;

    private IDownloadItemCallback downloadCallback = null;

    public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, 
DownloadItem downloadItem, IBeforeDownloadCallback callback)
{
if (this.downloadCallback != null)
{
    this.downloadCallback.Cancel();
}

// this is my own download dialog blabla, not call Continue here.
}
        public void OnDownloadUpdated(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
        {
            this.downloadCallback = callback;
            OnDownloadUpdatedFired?.Invoke(this, downloadItem);
        }
}

сначала вызывается OnDownloadUpdated, затем Вызывается OnBeforeDownload, затем несколько других OnDownloadUpdated ....

...