J'ai une page ASP.NET qui nécessite des données d'une autre DLL et le processus peut prendre beaucoup de temps. Donc, j'ai commencé à utiliser APM. Mais quand j'essaye ça, la page ne s'arrête jamais de charger. Il charge indéfiniment. Y a-t-il quelque chose que je fais de mal?Comment utiliser le modèle de programmation asynchrone dans ASP.NET?
Voici ma page web:
List<string> allVoices;
GetAllVoicesDelegate getVoicesDelegate;
internal delegate List<String> GetAllVoicesDelegate();
protected void Page_Load(object sender, EventArgs e)
{
Page.AddOnPreRenderCompleteAsync(new BeginEventHandler(BeginGetDropDownValues),
new EndEventHandler(EndGetDropDownValues));
}
public IASyncResult BeginGetDropDownValues(object o,EventArgs args,AsyncCallback cb,object obj)
{
getVoicesDelegate = MyLib.getStrings;
return getVoicesDelegate.BeginInvoke(EndGetDropDownValues,null);
}
public void EndGetDropDownValues(IASyncResult ar)
{
allVoices = getVoicesDelegate.EndInvoke(ar);
}
protected override OnPreRenderComplete(EventArgs e)
{
if(allVoices.Count>0)
{
foreach(String str in allVoices)
{
Response.Write(str);
}
}
base.OnPreRenderComplete(e);
}
Voici la méthode MyLib.getStrings() dans une autre DLL:
public List<String> getStrings()
{
List<String> allStr=new List<string>();
allStr.Add("1");
allStr.Add("2");
allStr.Add("3");
allStr.Add("4");
}
thx 4 réponse, kevin. après avoir retiré le gestionnaire OnPreRenderComplete, j'ai toujours le même problème. – Attilah
Désolé, cela ne vous a pas aidé. Je les autres réponses vous conduisent dans la bonne direction. Le code sur lequel vous basez la solution est destiné à Winforms je pense. Vous aurez besoin de regarder AJAX et/ou webservices pour faire la programmation d'applications web asynchrones. –