Quelqu'un peut-il me donner un exemple de l'utilisation de SPStatefulLongOperation? C'est très mal documenté.Utilisation de SPStatefulLongOperation
0
A
Répondre
0
Voici un exemple de code que je viens d'utiliser. Il applique un ThmxTheme
(selectedTheme
) à tous SPWebs
dans un SPSite
(site
).
SPStatefulLongOperation.Begin(
"Applying theme to sites.",
"<span id='trailingSpan'></span>",
(op) =>
{
op.Run((opState) =>
{
for (int i = 0; i < site.AllWebs.Count; i++)
{
// Update status.
opState.Status = String.Format(
"<script type='text/javascript'>document.all.item('trailingSpan').innerText = '{0} ({1} of {2})';</script>",
site.AllWebs[i].Title,
i + 1,
site.AllWebs.Count);
// Set the theme.
selectedTheme.ApplyTo(site.AllWebs[i], true);
}
});
op.End(System.Web.HttpContext.Current.Request.UrlReferrer.ToString());
});
Notez que la valeur actuelle de opState.State
est ajouté au code HTML du client (via HttpContext.Current.Response.Write
et .Flush
) chaque seconde. Ainsi, vous ne voulez envoyer aucun message d'état directement; vous voulez envoyer du code JavaScript qui mettra à jour un élément d'état existant sur la page. (Ici, l'élément trailingSpan
.)