Asynchronous
Execution:
Two
ways either implement IHTTPAsyncHandler interface or in ASP.NET 2.0 set
<%@
Page Async=”true” %>.
The
second option implements IHTTPAsyncHandler interface automatically for the page
when parsed or compiled.
AddOnPreRenderCompleteAsync
(
new BeginEventHandler(BeginTask),
new
EndEventHandler(EndTask));
AddOnPreRenderCompleteAsync()
shoud be called in Page_load. The BeginEventHandler
and EndEventHandler are delegates defined as follows:
IAsyncResult
BeginEventHandler(
object
sender,
EventArgs
e,
AsyncCallback
cb,
object
state)
void
EndEventHandler(
IAsyncResult
ar)
AsyncProcess
starts and completes between PreRender and PreRenderComplete.
Other
way to perform Async Task is using AsyncPageTask structure. It also
allows multiple tasks to execute simultaneously.
void Page_Load (object
sender, EventArgs e)
{
PageAsyncTask task = new
PageAsyncTask(
new
BeginEventHandler(BeginTask),
new
EndEventHandler(EndTask),
null, //Time
out event handler (optional)
null, //State
– e.g Name “Thread 1” or any data
0); // Run Simultaneously
Boolean
RegisterAsyncTask(task);
}
By
default timeout is 45 Seconds and can be modified in Web Config:
<system.web>
<pages asyncTimeout=”30” />
</system.web>
Or
<%@ Page
AsyncTimeout=”30” %> directive.
To even improve performance
and take out the advantage one can start PageAsyncTasks
at any time after registering by Calling Page.ExecuteRegisteredAsyncTasks().
Page LifeCycle:
PreInit(2.0) Posted Data is available
Init (ViewState No Available,
Personalization info is setup)
àViewState
Tracked Here
InitComplete(2.0) Complete View State
Available
à Override
protected virtual LoadViewState on user custom controls to load
your view state persisted previously.
PreLoad(2.0) Only for Pages
Load Safe to work here
à Dynamically
Created controls in load are given a try to match the posted data and update
their information after Load event.
LoadComplete(2.0) Page
preparation and initialization phase completed. It’s just a signal. After this
Page will enter into rendering phase.
PreRender
PreRenderComplete (2.0) Only for
Page.
SaveStateComplete (2.0) Saves
controls state into __ViewState hidden field.
SavePageStateFromStorageMedium and
LoadPageStateFromStorageMedium can be used to store info in any other medium.