Public Class Form1

    Private ServiceInstance As New localhost.PostalWebService()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Dołączenie metody obsługi zdarzenia
        ' dla asynchronicznego wywołania.
        AddHandler ServiceInstance.GetPackageInfoCompleted, AddressOf GetPackageInfoCompleted
    End Sub


    Private Sub cmdGetInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetInfo.Click
        Me.Cursor = Cursors.WaitCursor

        Dim PackageInfo As New localhost.ClientPackageInfo()
        PackageInfo = ServiceInstance.GetPackageInfo("221")
        MessageBox.Show("Pobrano datę dostarczenia: " & PackageInfo.DeliveryDate, "Dane z usługi sieciowej!")

        Me.Cursor = Me.DefaultCursor
    End Sub

    Private Sub cmdGetAsync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGetAsync.Click
        ' Wyłączenie przycisku, aby pozwolić na tylko jedno
        ' wywołanie asynchroniczne naraz.
        cmdGetAsync.Enabled = False

        ' Uruchamianie wywołania asynchronicznego.
        ' Ta metoda nie blokuje działania kodu.
        ServiceInstance.GetPackageInfoAsync("Call001", "Call001")

        ' Umożliwienie anulowania.
        cmdCancelAsync.Enabled = True
    End Sub

    Private Sub GetPackageInfoCompleted(ByVal sender As Object, ByVal e As localhost.GetPackageInfoCompletedEventArgs)
        If Not e.Cancelled Then
            MessageBox.Show("Pobrano datę dostarczenia: " & e.Result.DeliveryDate)
        End If

        ' W każdym przypadku należy ponownie włączyć przycisk, aby umożliwić następne 
        ' wywołanie.
        cmdGetAsync.Enabled = True
    End Sub

    Private Sub cmdCancelAsync_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancelAsync.Click
        ServiceInstance.CancelAsync("Call001")
        cmdCancelAsync.Enabled = False
    End Sub
End Class
