最近做一个抓取,通过cef post提交参数,返回下载文件,需要判断文件是否下载完成。
解决:重写 IDownloadHandler 接口
using CefSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CefSharpSimpleDemo { class DownloadHandler : IDownloadHandler { public string GetTimeStamp() { TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds).ToString(); } public void OnBeforeDownload( IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) { if (!callback.IsDisposed) { using (callback) { DownCrawler.isDownload = false; //标识置为false,表示正在下载 string fileLocation = downloadItem.SuggestedFileName.Substring(0, downloadItem.SuggestedFileName.IndexOf(".")); //文件路径 Debug.WriteLine(fileLocation); callback.Continue(@"C:\Downloads\one\" +GetTimeStamp()+downloadItem.SuggestedFileName, showDialog: false); //设置文件存放路径 } } } public void OnDownloadUpdated( IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { //如果下载完成 if (downloadItem.IsComplete) { Debug.WriteLine("下载完成"); DownCrawler.isDownload = true; //标识置为true,表示下载完成 } } } public class DownCrawler { public static bool isDownload; } }
调用
browser.DownloadHandler = new DownloadHandler();然后在执行代码中 插入循环判断 下载标识 是否为true
while(!DownCrawler.isDownload){ Thread.Sleep(2000); }
版权声明:《 c# cef 判断文件下载是否完成 》为zhangkang原创文章,转载请注明出处!
最后编辑:2020-6-3 20:06:16