2010-12-14 37 views

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.)