А как реализовать CreateObject(позднее связывание) + WithEvents? - VB

Узнай цену своей работы

Формулировка задачи:

Смотрим на этот старый топик:
Загрузить файл через IE, дождаться завершения и отловить если что ошибки
Я немного поигрался. Вопрос в принципе решается.
Нужно реализовать такой код (смысл, чтоб окно IE было закрыто в любом случае, на экран выводится только диалог сохранения, при ошибке невидимое окно IE надо закрыть):

Мне надо переписать этот код (события!!!) для позднего связывания

:

Вообще говоря мне это нужно сейчас сделать в VB.Net а не в VB6. Но решил поиграться сначала в VB6.
Использовать раннее связывание в .Net я не рискну - там для COM версии автоматически не подставляются если делать ранние ссылки.
Смотрел еще на тамошний объект WebBrowser, но что-то он мне для этой задачи не нравится.
Создал тему в .Net:
Вызов стандартного окна загрузки IE
но никто ничего не отвечает.
Решил здесь спросить.

Решение задачи: «А как реализовать CreateObject(позднее связывание) + WithEvents?»

textual
Листинг программы
using System;
using System.Net;

namespace WebDownload
{
    public class WebDownload
    {
        public event EventHandler<webdownloadeventargs> Error;
        public event EventHandler<webdownloadeventargs> FileDownload;

        public void Download(string Link, string Destination)
        {
            try
            {
                var request = (HttpWebRequest)System.Net.HttpWebRequest.Create(Link);
                request.Method = "HEAD";
                var response = (HttpWebResponse)request.GetResponse();

                if (response.ContentLength != -1)
                {
                    OnFileDownLoad(new WebDownloadEventArgs() { Status = @"FileDownload" });
                    var wc = new WebClient();
                    wc.DownloadFile(Link, Destination);
                    OnFileDownLoad(new WebDownloadEventArgs() { Status = @"Download completed" });
                }
                else
                {
                    OnFileDownLoad(new WebDownloadEventArgs() { Status = @"Not download content" });
                }
            }
            catch (Exception ex)
            {
                OnError(new WebDownloadEventArgs() { Status = ex.ToString() });
            }
        }

        private void OnFileDownLoad(WebDownloadEventArgs e)
        {
            if (FileDownload != null)
            {
                FileDownload(this, e);
            }
        }

        private void OnError(WebDownloadEventArgs e)
        {
            if (Error != null)
            {
                Error(this, e);
            }
        }
    }

    public class WebDownloadEventArgs : EventArgs
    {
        public string Status { get; set; }
    }
}
</webdownloadeventargs></webdownloadeventargs>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы