Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Threading.Tasks.Task生成SPEException_C#_Multithreading_Sharepoint - Fatal编程技术网

C# System.Threading.Tasks.Task生成SPEException

C# System.Threading.Tasks.Task生成SPEException,c#,multithreading,sharepoint,C#,Multithreading,Sharepoint,在代码中使用System.Threading.Tasks.Task时,出现以下异常: SPException:尝试在单线程模式下对多个线程进行调用。(来自HRESULT的异常:0x80010102(RPC_E_尝试的_多线程)) 请指出生成此异常的所有情况。每个上下文只能运行一个线程。如果需要对SharePoint对象执行多线程操作,可以使用以下截取部分作为参考: public static class SPListItemContextIsolatedExtension { publ

在代码中使用System.Threading.Tasks.Task时,出现以下异常:

SPException:尝试在单线程模式下对多个线程进行调用。(来自HRESULT的异常:0x80010102(RPC_E_尝试的_多线程))


请指出生成此异常的所有情况。

每个上下文只能运行一个线程。如果需要对SharePoint对象执行多线程操作,可以使用以下截取部分作为参考:

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()));
    }
}
可能还有其他几种方法来实现隔离,上面的代码只是一个示例

也许或者可能帮助你。
    item.RunIsolated(YourMethodHere);