HighTechTalks DotNet Forums  

Asynchronous Programming Model & ADO.NET

Dotnet Data Tools microsoft.public.dotnet.datatools


Discuss Asynchronous Programming Model & ADO.NET in the Dotnet Data Tools forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
JumpingMattFlash
 
Posts: n/a

Default Asynchronous Programming Model & ADO.NET - 12-11-2007 , 05:01 AM






I'm trying to execute two queries on a database asynchronously by using the
..NET 2.0 APM. I've created a test harness which executes two queries which
take at least ten seconds each. Using the APM I would've expected the page to
load in a little over ten seconds, but instead it takes over 30.

Here's my code for a single ASP.NET page with two gridviews on. Any pointers
as to where i may be going wrong would be appreciated:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
Dim aResult As IAsyncResult = BeginReader()
Dim aResultTwo As IAsyncResult = BeginSecondReader()
Dim aTable As DataTable = EndReader(aResult)
GridView1.DataSource = aTable
GridView1.DataBind()
Dim aTableTwo As DataTable = EndReader(aResultTwo)
GridView2.DataSource = aTableTwo
GridView2.DataBind()
End Sub

Public Shared Function BeginReader() As IAsyncResult
Dim myConn As New SqlConnection("Data Source=(local);Initial
Catalog=MyDB;Persist Security Info=True;User
ID=test_user;Password=test_user;Async=True;")
Dim myCmd As New SqlCommand("WAITFOR DELAY '00:00:10'; SELECT TOP 10
* FROM tblUser", myConn)
myCmd.CommandType = CommandType.Text
myConn.Open()

Dim asResult As IAsyncResult = myCmd.BeginExecuteReader(Nothing,
myCmd)
Return asResult
End Function

Public Shared Function BeginSecondReader() As IAsyncResult
Dim myConn As New SqlConnection("Data Source=(local);Initial
Catalog=MyDB;Persist Security Info=True;User
ID=test_user;Password=test_user;Async=True;")
Dim myCmd As New SqlCommand("WAITFOR DELAY '00:00:10'; SELECT TOP 10
* FROM tblUser ORDER BY NEWID()", myConn)
myCmd.CommandType = CommandType.Text
myConn.Open()

Dim asResult As IAsyncResult = myCmd.BeginExecuteReader(Nothing,
myCmd)
Return asResult
End Function

Public Shared Function EndReader(ByRef asResult As IAsyncResult) As
DataTable
Dim RetTable As New DataTable
Dim myCmd As SqlCommand = CType(asResult.AsyncState, SqlCommand)
myCmd.EndExecuteReader(asResult)
myCmd.Connection.Close()
Dim myAdapter As SqlDataAdapter = New SqlDataAdapter(myCmd)
myAdapter.Fill(RetTable)
Return RetTable
End Function
--
=============
VB .NET Developer
http://www.rocketscience.uk.com
http://info.i-snapshot.com

Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.