如何在自定义 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
}
我认为这比定期更新更公平。
我需要一些合理的建议来设置自定义长 运行 计时器作业(超过半小时)的进度。
我在计时器作业执行中有超过 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
}
我认为这比定期更新更公平。