Asyncrone (über mehrere Requests) Verarbeitung

16/03/2010 - 15:30 von Manfred Lutterbach | Report spam
Hallo liebe NG,

für die Arbeit habe ich eine ASP.Net WebService-Application geschrieben.
Dieser WebService soll eine Anfrage asyncron verarbeiten. Alle paar Sekunden
fragt der Client an, ob ein Ergebnis vorliegt. Mein Problem ist nun, dass die
Anfrage nicht asyncron verarbeitet wird. Hier mal ein vereinfachter Code, der
das Problem beschreibt:

<System.Web.Services.WebService(Namespace:="http://tempuri.org/")>
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function

<WebMethod(enablesession:=True)> _
Public Function Test() As String
Dim at As New AsyncTest

Me.Session.Add("test", at)

at.Go()

Return "yes well"
End Function

End Class

Public Class AsyncTest

Private WithEvents _bw As BackgroundWorker

Public Sub Go()
_bw = New BackgroundWorker
_bw.RunWorkerAsync()
End Sub

Private Sub _bw_DoWork(ByVal sender As Object, ByVal e As
System.ComponentModel.DoWorkEventArgs) Handles _bw.DoWork
Threading.Thread.Sleep(5000)
End Sub
End Class

Leider wird nicht sofort "yes well" ausgegeben, sondern erst wenn der
BackgroundWorker 5 Sekunden gewartet hat. Nun frage ich mich wieso und vor
allem, wie ich das Problem umgehen soll.

Vielen dank schon mal in vorraus
M. Lutterbach
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
16/03/2010 - 22:15 | Warnen spam
Hallo Manfred,

"Manfred Lutterbach" schrieb:

Dieser WebService soll eine Anfrage asyncron verarbeiten.



http://www.google.de/search?q=asp.n...+asynchron

Private Sub _bw_DoWork(ByVal sender As Object, ByVal e As
System.ComponentModel.DoWorkEventArgs) Handles _bw.DoWork
Threading.Thread.Sleep(5000)
End Sub



meiner Meinung nach legst Du damit den aktuellen Thread (in dem gerade
auch die Webservicemethode aufgerufen wurde, schlafen.

Leider wird nicht sofort "yes well" ausgegeben, sondern erst wenn der
BackgroundWorker 5 Sekunden gewartet hat. Nun frage ich mich wieso und vor
allem, wie ich das Problem umgehen soll.



http://nishantrana.wordpress.com/20...hronously/

Wenn das nicht hilft, poste mal bitte mehr Details über den Client,
den dort verwendeten Code, ...

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen