в принципе вам нужна противопожарная н забыть реализации где вы можете просто запустить асинхронную операцию, не дожидаясь ее завершения.
Отъезд следующие answer по соответствующему вопросу.
Код находится на C# .Net, но vb.net должен быть аналогичным.
Edit: 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 = "истинный" в вашей директиве 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"
И в коде-поведении d:
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
Я определенно ищу решение по-за-забыть. Меня не волнует, какой результат вызванного веб-сервиса, так как я буду обрабатывать это в веб-сервисе. Прошу прощения, но я не мог следовать тому, что вы делаете в этом примере, на который вы ссылались. Если возможно, вы можете дать мне короткое объяснение? Благодарю. – kirpre
Я добавил решение vb.net к моему ответу. Дайте мне знать, если вам нужно рассказать об этом. –
Большое спасибо за вашу помощь. Я смог заставить это работать наконец. Единственное странное, что, хотя этот проект использует фреймворк 3.5, я мог бы получить только решение 1.0/2.0, которое вы представили для работы. Решение 3.5 не будет продолжаться до тех пор, пока веб-сервис не будет завершен. Еще раз спасибо. – kirpre