Examples of when to use PageAsyncTask (Asynchronous asp.net pages)

asp.net

Solution

Link by Tony_Henrich is very good, and here is another one of equal usefulness: http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

All `DataSource` controls are automatically databound after `Page_PreRender` (if not already manually before that) - so yes you can bind data in all `PageAsyncTask` event handlers, or even in `Page_PreRenderComplete` (which starts only after every `PageAsyncTask` is finished or timeouts).

`PageAsyncTask` is best used when working with databases, web services, file I/O and all other operations on which CPU waits for the data to process it - but not for CPU intensive or long running calculations (when CPU is busy).

Having said all that, the page will process faster only if two or more `PageAsyncTask` are run in parallel - but, even with only one `PageAsyncTask`, the request thread is sent back to the pool (limited supply) while an I/O thread handles that operation, thus freeing IIS to receive more incoming requests until the task finishes (then it gets a request thread back from the pool, not necessarily that same one, and continues page processing).

Problem

From my understanding from reading about ASP.NET asynchronous pages, the method which executes when the asynchronous task begins ALWAYS EXECUTES between the prerender and the pre-render Complete events. So because the page's controls' events run between the page's load and prerender events, is it true that whatever the begin task handler (handler for BeginAsync below) produces, it can't be used in the controls' events? So for example, if the handler gets data from a database, the data can't be used in any of the controls' postback events? Would you bind data to a data control after prerender? ``` PageAsyncTask pat = new PageAsyncTask(BeginAsync, EndAsync, null, null, true); this.RegisterAsyncTask(pat); ```

Original source