Search code examples
dotnetbrowser

Download more than 2 files in the same sub using DotNetBrowser


When I try to download 2 or more itens in the same Sub, DotNetBrowser just download the last one. What should i do to download both itens in example?

Sub test()
    _browserview = CType(Me.PanelBrowser.Controls("browsername"), WinFormsBrowserView)
    _browserview.Browser.LoadURL("http://www.7-zip.org/a/7z1604.exe")
    _browserview.Browser.LoadURL("http://www.7-zip.org/a/7z1604-src.7z")
End Sub

Solution

  • Here is a brief sample that demonstrates the approach that can be used to download several files:

    Imports System.Threading
    Imports DotNetBrowser
    
    Module Module1
    
        Sub Main()
            Dim browser As Browser
            browser = BrowserFactory.Create()
            browser.DownloadHandler = New SampleDownloadHandler
            DownloadFile(browser, "http://www.7-zip.org/a/7z1604.exe")
            DownloadFile(browser, "http://www.7-zip.org/a/7z1604-src.7z")
            Console.In.ReadLine()
            browser.Dispose()
        End Sub
    
        Class SampleDownloadHandler
            Implements DownloadHandler
    
            Public Event AllowDownloadCalled(download As DownloadItem)
    
            Public Function AllowDownload(download As DownloadItem) As Boolean Implements DownloadHandler.AllowDownload
                AddHandler download.DownloadEvent, Sub(s, e)
                                                       If e.Item.Completed Then
                                                           Console.WriteLine("Downloaded: " + e.Item.DestinationFile)
                                                       End If
                                                   End Sub
    
                Console.WriteLine("Download allowed: " + download.URL)
                RaiseEvent AllowDownloadCalled(download)
                Return True
            End Function
        End Class
    
        Private Sub DownloadFile(browser As Browser, url As String)
            Dim downloadHandler As SampleDownloadHandler
            downloadHandler = browser.DownloadHandler
    
            Dim downloadEvent As New ManualResetEvent(False)
            Dim allowDownloadEvent As New SampleDownloadHandler.AllowDownloadCalledEventHandler(Sub(d As DownloadItem) downloadEvent.Set())
    
            AddHandler downloadHandler.AllowDownloadCalled, allowDownloadEvent
            browser.LoadURL(url)
            downloadEvent.WaitOne()
            RemoveHandler downloadHandler.AllowDownloadCalled, allowDownloadEvent
        End Sub
    End Module 
    

    The complete sample that demonstrates how to handle this case can be found by the following link: https://dotnetbrowser.support.teamdev.com/support/solutions/articles/9000110831-downloading-several-files