如何从foreach c#中获取检查点记录和处理剩余数据
how to take checkpoint record and process remaining data from foreach c#
我有多个文件要从列表中处理。
如果由于任何原因列表被中断,当我们下次执行程序时,它会获取最后执行的记录并开始处理更多的记录,而不是从 0 索引开始。
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
<Query>
</Query>
</View>";
camlQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
ListItemCollection listItems = list.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
foreach (var item in listItems)
{
if (item.FileSystemObjectType == FileSystemObjectType.File)
{
例如我有10个文件要处理。
在每个文件之后我将文件名保存到日志中所以我最后执行了文件名。
如果由于任何原因程序关闭,当我们 运行 下次它应该处理下一个文件而不是从头开始处理它。
我可以做些什么,比如这里的检查点?
如果可以,请在 SharePoint 列表或文档库中添加一列以保存已处理或未处理的状态。然后您只需要更新您的 CAML 查询,以便它提取所有尚未处理的记录。然后在您的 foreach
循环中更新您刚刚处理的记录并更新其状态。
这样,将处理新记录,并且不会在您的 CAML 查询中提取已处理的记录。这也确保您不会检索已经处理过的记录。
我有多个文件要从列表中处理。
如果由于任何原因列表被中断,当我们下次执行程序时,它会获取最后执行的记录并开始处理更多的记录,而不是从 0 索引开始。
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
<Query>
</Query>
</View>";
camlQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
ListItemCollection listItems = list.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
foreach (var item in listItems)
{
if (item.FileSystemObjectType == FileSystemObjectType.File)
{
例如我有10个文件要处理。 在每个文件之后我将文件名保存到日志中所以我最后执行了文件名。 如果由于任何原因程序关闭,当我们 运行 下次它应该处理下一个文件而不是从头开始处理它。
我可以做些什么,比如这里的检查点?
如果可以,请在 SharePoint 列表或文档库中添加一列以保存已处理或未处理的状态。然后您只需要更新您的 CAML 查询,以便它提取所有尚未处理的记录。然后在您的 foreach
循环中更新您刚刚处理的记录并更新其状态。
这样,将处理新记录,并且不会在您的 CAML 查询中提取已处理的记录。这也确保您不会检索已经处理过的记录。