使用SPStatefulLongOperation

时间:2010-12-14 13:45:36

标签: sharepoint-2010

有人能给我一个使用SPStatefulLongOperation的例子吗?它的记录非常糟糕。

1 个答案:

答案 0 :(得分:0)

这是我刚才使用的代码示例。它将ThmxThemeselectedTheme)应用于SPWebsSPSite)中的所有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元素。)