有人能给我一个使用SPStatefulLongOperation的例子吗?它的记录非常糟糕。
答案 0 :(得分:0)
这是我刚才使用的代码示例。它将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
元素。)