В основном вам нужна реализация fire-n-забудьте, где вы можете просто запустить асинхронную операцию, не ожидая ее завершения.
Ознакомьтесь со следующим ответом на связанный вопрос.
Код находится в C # .Net, но vb.net должен быть похожим.
Редактировать: Vb.net Решение:
Это решение vb.net для асинхронного запуска веб-метода:
Рассмотрим ваш веб-метод следующим образом:
Public Class Service1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Sub LengthyProcess()
'Perform the lengthy operation
'Also note this doesn't return anything
'Hence can be used safely in fire-n-forget way of asynchronous delegate
System.Threading.Thread.Sleep(1000)
System.IO.File.WriteAllText("C:\\MyFile.txt", "This is the content to write!", Encoding.UTF8)
System.Threading.Thread.Sleep(1000)
End Sub
End Class
Теперь для асинхронного вызова веб-метода вы можете выполнить одно из следующих действий в зависимости от версии .Net:
.Net 3.5 (я не уверен, работает ли он в 2.0)
Обязательно установите Async = "true" в вашей директиве Page
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" Async="true" %>
А в коде позади:
Partial Public Class _Default
Inherits System.Web.UI.Page
Dim webService As MyService.Service1
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
webService = New MyService.Service1()
webService.LengthyProcessAsync()
End Sub
End Class
.Net 2.0 / 1.0
Нет необходимости устанавливать Async = "true"
А в коде позади:
Partial Public Class _Default
Inherits System.Web.UI.Page
Public Delegate Sub MyDelegateCallBack()
Dim webService As MyService.Service1
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
webService = New MyService.Service1()
Dim del As MyDelegateCallBack
del = New MyDelegateCallBack(AddressOf webService.LengthyProcess)
del.BeginInvoke(Nothing, Nothing)
End Sub
End Class