C# Sharepoint Web部件的并行服务器端处理

C# Sharepoint Web部件的并行服务器端处理,c#,.net,sharepoint,parallel-processing,asynchronous,C#,.net,Sharepoint,Parallel Processing,Asynchronous,下面是一个场景。我有许多Sharepoint Web部件,它们以网格格式向用户显示数据。它们都连接到导航web部件,用户可以使用该部件为每个数据网格选择参数。在后端,网格web部件调用DI容器以获取“IDataProvider”,它查询某个SoR并返回一个数据表 我想做的是:我希望网格web部件以并行方式而不是串行方式执行,因为我们的许多“IDataProvider”实现都会调用web服务。我试图在WebPartManager.ConnectionsActivated事件中启动Backgroun

下面是一个场景。我有许多Sharepoint Web部件,它们以网格格式向用户显示数据。它们都连接到导航web部件,用户可以使用该部件为每个数据网格选择参数。在后端,网格web部件调用DI容器以获取“IDataProvider”,它查询某个SoR并返回一个数据表

我想做的是:我希望网格web部件以并行方式而不是串行方式执行,因为我们的许多“IDataProvider”实现都会调用web服务。我试图在WebPartManager.ConnectionsActivated事件中启动BackgroundWorker,在“OnPreRender”方法中使用“wait”标志,但服务器抛出一个错误,表示不允许异步操作。当我试图在页面布局上将“Async”标志设置为true时,我收到一个错误,告诉我sharepoint explicity禁止将“Async”标志设置为true

有解决办法吗?

比佐罗分部

首先,我喜欢这个名字:-)

不用担心:Web部件可以异步/多线程运行,而无需做太多额外工作。您只需通过Page.RegisterAsyncTask注册相应的事件处理程序即可。您将指定应异步调用的方法,以及处理完成后控件将返回的回调方法

Daniel Larson在他的文章()和()中提供了一些很好的报道。他还谈到了一些注意事项和其他问题

我希望这有帮助

比佐罗

首先,我喜欢这个名字:-)

不用担心:Web部件可以异步/多线程运行,而无需做太多额外工作。您只需通过Page.RegisterAsyncTask注册相应的事件处理程序即可。您将指定应异步调用的方法,以及处理完成后控件将返回的回调方法

Daniel Larson在他的文章()和()中提供了一些很好的报道。他还谈到了一些注意事项和其他问题


我希望这有帮助

这正是我一直在寻找的东西。它甚至看起来很简单(或者至少,像这类事情一样简单)。谢谢这正是我一直在寻找的东西。它甚至看起来很简单(或者至少,像这类事情一样简单)。谢谢