the .net application has a pool of threads. processing of a page is a series
of steps (onint, onload, ...), for each of these steps a thread is pulled
from the pool, and used to process the step, then optionaly returned to the
pool. So while more than one thread may be used to process a single page
request, only 1 thread is working at a time on a sngle page request. this is
refered to as thread agile.
when a thread is pulled from the pool, its passed the page instance created
for the request and the context (see component documentation), it then uses
this to process the step.
-- bruce (sqlwork.com)