在我的代码中使用System.Threading.Tasks.Task时,我得到以下异常:
SPException:尝试在单线程模式下对多个线程进行调用。 (来自HRESULT的异常:0x80010102(RPC_E_ATTEMPTED_MULTITHREAD))
请指出生成此异常的所有情况。
答案 0 :(得分:0)
每个上下文只能运行一个线程。如果需要多线程SharePoint对象,可以使用以下剪切作为参考:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Log Analysis Web APP</title>
<link rel="stylesheet" type="text/css" href="/public/stylesheets/style.css">
</head>
<body>
<h1>Text Example</h1>
</body>
</html>
然后,您可以执行调用扩展名的操作,例如:
public static class SPListItemContextIsolatedExtension
{
public static SPListItem Isolate(SPListItem item)
{
var parentWeb = item.ParentList.ParentWeb.Url;
var site = new SPSite(parentWeb);
var web = site.OpenWeb();
return web.GetListItem($"{parentWeb}/{item.Url}");
}
public static void RunIsolated(this SPListItem item, Action<SPListItem> act)
{
Task.Factory.StartNew(() => act(item.Isolate()));
}
}
可能还有其他几种方法可以进行隔离,上面的代码只是一个例子。