如何在自定义 long 运行 计时器作业中设置进度

How to set progress in custom long running timer job

我需要一些合理的建议来设置自定义长 运行 计时器作业(超过半小时)的进度。

我在计时器作业执行中有超过 50k 个项目的循环。

如何优雅地使用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
}

我认为这比定期更新更公平。