OVH Cloud OVH Cloud

[SPS 2003] RegisterWorkItemCallback

4 réponses
Avatar
Joe L. F.
J'ai un webpart qui réalise un traitement assez long.
J'ai essayé d'employer la méthode RegisterWorkItemCallback, mais le rendu du
webpart ne se fait pas, et la méthode RenderWorkItemTimeout n'est pas appelé
non plus.

Quelqu'un a-t-il déjà réussi à employer cette méthode ?

4 réponses

Avatar
Renaud COMTE [MVP]
je pense que cet artcile du MSDN sura vous combler

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/sharepoint_amazonwebparts.asp

Apres tout un appel de Web service long et distant en asynchrone via
RegisterWorkItemCallback devrais vous allez ;)

Voila

Renaud COMTE [MVP]

"Joe L. F." a écrit :

J'ai un webpart qui réalise un traitement assez long.
J'ai essayé d'employer la méthode RegisterWorkItemCallback, mais le rendu du
webpart ne se fait pas, et la méthode RenderWorkItemTimeout n'est pas appelé
non plus.

Quelqu'un a-t-il déjà réussi à employer cette méthode ?


Avatar
Joe L. F.
J'ai déjà essayé, mais lorsque j'appelle une méthode un peu longue, le
webpart est rendu dans l'état et la méthode "longue" ne s'exécute pas.

"Renaud COMTE [MVP]" a écrit :

je pense que cet artcile du MSDN sura vous combler

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_SP2003_ta/html/sharepoint_amazonwebparts.asp

Apres tout un appel de Web service long et distant en asynchrone via
RegisterWorkItemCallback devrais vous allez ;)

Voila

Renaud COMTE [MVP]

"Joe L. F." a écrit :

> J'ai un webpart qui réalise un traitement assez long.
> J'ai essayé d'employer la méthode RegisterWorkItemCallback, mais le rendu du
> webpart ne se fait pas, et la méthode RenderWorkItemTimeout n'est pas appelé
> non plus.
>
> Quelqu'un a-t-il déjà réussi à employer cette méthode ?


Avatar
Stephane CORDONNIER [MVP]
Cette méthode permet simplement de lancer plusieurs traitement en parallèle.

Typiquement, on peut lancer un traitement très long dans un premier temps
qui mettra plusieurs secondes à s'exécuter et lancer pleins de petits
traitement en parallèle.

Le rendu de la WebPart n'interviendra que lorsque tous les traitements
seront effectués ou que le timeout sera déclenché.

--
Stephane CORDONNIER
http://www.sharepoint-france.com
[Microsoft MVP - France]


"Joe L. F." a écrit dans le message de
news:
J'ai un webpart qui réalise un traitement assez long.
J'ai essayé d'employer la méthode RegisterWorkItemCallback, mais le rendu


du
webpart ne se fait pas, et la méthode RenderWorkItemTimeout n'est pas


appelé
non plus.

Quelqu'un a-t-il déjà réussi à employer cette méthode ?


Avatar
Joe L. F.
Ok, voici mon code pour que ce soit plus clair:

ManualResetEvent mre = new ManualResetEvent(false);

public PortalMap()
{
this.PreRender += new EventHandler(CreateThread);
}

private void CreateThread(object o, EventArgs e)
{
RegisterWorkItemCallback(new WaitCallback(PortalMap_PreRender), null);
}

private void PortalMap_PreRender(object o)
{
if(this.PartCacheRead(Storage.Personal, cacheKey ) == null)
{
this.PartCacheWrite(Storage.Personal, cacheKey, BuildPortalMap(),
TimeSpan.FromSeconds(timeoutCache));
}
mre.Set();
}

protected override void RenderWebPart(HtmlTextWriter output)
{
output.Write(PartCacheRead(Storage.Personal, cacheKey));
}

protected override void RenderWorkItemTimeout(HtmlTextWriter output)
{
output.Write ("Timed out");
}

La méthode "BuildPortalMap()" n'est pas appelée, et il n'y a pas de timeout
de déclenché (le méthode "RenderWorkItemTimeout()" n'est pas appelée). Par
contre la méthode "RenderWebPart()" est bien appelée, mais comme le cache est
vide, le webpart n'a pas de rendu.

Qu'est-ce qui ne va pas ??? :(

"Stephane CORDONNIER [MVP]" a écrit :

Cette méthode permet simplement de lancer plusieurs traitement en parallèle.

Typiquement, on peut lancer un traitement très long dans un premier temps
qui mettra plusieurs secondes à s'exécuter et lancer pleins de petits
traitement en parallèle.

Le rendu de la WebPart n'interviendra que lorsque tous les traitements
seront effectués ou que le timeout sera déclenché.

--
Stephane CORDONNIER
http://www.sharepoint-france.com
[Microsoft MVP - France]


"Joe L. F." a écrit dans le message de
news:
> J'ai un webpart qui réalise un traitement assez long.
> J'ai essayé d'employer la méthode RegisterWorkItemCallback, mais le rendu
du
> webpart ne se fait pas, et la méthode RenderWorkItemTimeout n'est pas
appelé
> non plus.
>
> Quelqu'un a-t-il déjà réussi à employer cette méthode ?