Использование SPStatefulLongOperation - PullRequest
0 голосов
/ 14 декабря 2010

Может ли кто-нибудь привести пример использования SPStatefulLongOperation?Это очень плохо документировано.

1 Ответ

0 голосов
/ 02 ноября 2011

Вот пример кода, который я только что использовал.Он применяет 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.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...