我有一个长时间运行的 SharePoint 计时器作业,我想在管理中心显示它的进度(因此我使用 SPJobDefinition.UpdateProgress( int 百分比)
方法)。
假设我的列表中有 50 000 个元素,我想在 foreach 循环中更新它们。如果我将诸如 job.UpdateProgress((int) itemNo/itemCount)
之类的内容放入循环中,每次调用方法时(50 000 次),它是否会向 SharePoint 服务器发送 Web 请求,或者仅当实际变化的百分比(不超过 100 次)?
我不希望因此而出现任何明显的性能下降,并且我认为更多的请求可能会减慢工作速度。
此外,什么工具可以很好地查看请求和响应(Fiddler?或者其他工具对于 Sharepoint 会更好?)。
最佳答案
(在 SP2010 中)每次调用 job.UpdateProgress 时,SPJobDefinition 类都会发送 SPRequest。 SPJobDefinition 不会在内部跟踪其完成百分比,因此除非它联系服务器,否则它无法知道您的新 int 是否是更新,因此它只是联系服务器。所以是的,调用这个 50000 次可能会显着减慢你的代码速度。
找出此类内容的最简单方法(因为在线 MSDN 文档有时可能非常稀疏)是在 Microsoft.SharePoint.dll 上使用 .Net 反射器。就我个人而言,我倾向于使用 ilSpy。
关于sharepoint - 更新 SharePoint 作业的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12055769/