2010-11-12 13 views
1

J'examine les pages Web asynchrones async="True". Dans Page_Load, j'enregistre 3 tâches en utilisant RegisterAsyncTask. Chacune de ces tâches appelle une procédure stockée SQL Server. La procédure stockée est en train de faire une simple sélection et d'attendre quelques secondes en utilisant WAITFOR DELAY '00:00:02'
Mon problème est que les pages prennent 6 secondes pour me revenir au lieu de seulement 2 secondes.PageAsyncTask ne fonctionne pas en parallèle

Ceci est la trace de la page.

 
aspx.page Begin Load   0.000173230943152662 0.000013 
Inside  BeginAsyncOperation1 0.000268187163843751 0.000095 
Inside  BeginAsyncOperation2 0.000517126445114984 0.000249 
Inside  BeginAsyncOperation3 0.000642237681836351 0.000125 
aspx.page End Load    6.09175786420362  6.09111 
Des idées/des suggestions?

+0

J'ai déjà rencontré ce problème. Pro Asp.net 4 dit que les tâches s'exécutent en parallèle, mais en lisant le code source de la classe de page, j'ai trouvé que les tâches sont réellement traitées de manière séquentielle. – zhy2002

Répondre

1

Il s'est avéré que vous pouvez utiliser le paramètre "executeInParallel" du constructeur PageAsyncTask pour contrôler ce comportement.

+0

J'utilise déjà le dernier paramètre comme vrai PageAsyncTask task1 = new PageAsyncTask (nouveau BeginEventHandler (BeginAsyncOperation1), nouveau EndEventHandler (EndAsyncOperation1), nouveau EndEventHandler (TimeoutAsyncOperation1), null, true); 'mais ils s'exécutent séquentiellement. –