Вот пример кода, который я только что использовал.Он применяет ThmxTheme
(selectedTheme
) ко всем SPWebs
в 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());
});
Обратите внимание, что текущее значение opState.State
добавляется к клиентуHTML (через HttpContext.Current.Response.Write
и .Flush
) каждую секунду.Таким образом, вы не хотите отправлять какие-либо сообщения о состоянии напрямую;Вы хотите отправить JavaScript, который обновит существующий элемент статуса на странице.(Здесь элемент trailingSpan
.)