问题描述
我需要一些合理的建议来设置自定义长时间运行的计时器作业(超过半小时)的进度。
我在计时器作业Execute中有超过5万个项目的循环。
如何使用SPJobDeFinition.UpdateProgress(int percentage)
方法每两分钟更新一次进度条?
我不希望for循环中的每个迭代都更新进度(进度更新太多)。
示例代码
SPListItemCollection collListItems = list.GetItems();
for (var i = 0; i < collListItems.Count; i++)
{
//code
}
解决方法
然后进行10或20次更新。我的意思是这样的:
var percentBlock = 10;
var updateBlock = collListItems.Count / percentBlock;
SPListItemCollection collListItems = list.GetItems();
for (var i = 0; i < collListItems.Count; i++)
{
if(i % updateBlock == 0)
SPJobDefinition.UpdateProgress(i / updateBlock * percentBlock);
//code
}
我认为这比期刊更公平。