Bonjour,
j'ai actuellement une procedure stockee qui tourne environ 1/4 dheure (sql server 2005) quand elle s'execute. Pour eviter la frustration des utilisateurs, je voudrais pouvoir afficher sa progression.
Voila le demarche que j'envisageais:
- Lancer la procedure depuis mon code en installant un callback.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 AsyncCallback proSto_callback = new AsyncCallback(callback_finProSto); sql_cmd.CommandType = CommandType.StoredProcedure; sql_cmd.CommandText = "ps1"; sql_cmd.CommandTimeout = int.Parse(ConfigurationSettings.AppSettings["DureeTimeout"].ToString()); sql_cmd.BeginExecuteNonQuery(proSto_callback, sql_cmd);- Mettre a jour dans ma procedure un attribut dans une table.
- Lire cet attribut depuis mon code et mettre a jour une barre de progression
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while (proStoStatus != 0) { //On relax le systeme System.Threading.Thread.Sleep(5000); //TODO : On lit et on update la barre }
Plusieurs questions :
Puis je reutiliser le sqlCommand qui m'a servi a lancer la procedure stockee pour lancer des requetes de selection pdt l'execution asynchrone de la proSto ?
Sachant que le code est executee en codebehind depuis une page aspx, ya t il un effet nefaste a faire un thread.sleep() ?
Ya t il une facon plus simple de proceder pour connaitre l'avancement de ma proSto ?
Merci.
Partager