Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环浏览文件夹中的每封电子邮件时设置封顶_C#_Exchange Server_Exchangewebservices - Fatal编程技术网

C# 循环浏览文件夹中的每封电子邮件时设置封顶

C# 循环浏览文件夹中的每封电子邮件时设置封顶,c#,exchange-server,exchangewebservices,C#,Exchange Server,Exchangewebservices,我在一个包含26000封电子邮件的文件夹中循环浏览每封电子邮件。当我的程序点击电子邮件6000(基于计数器)时,它结束。为什么它不在每封邮件中循环 int offset = 0; int pageSize = 1000; bool more = true; ItemView view = new ItemView(pageSize, offset,OffsetBasePoint.Beginning); view.PropertySet = PropertySet.FirstClassProper

我在一个包含26000封电子邮件的文件夹中循环浏览每封电子邮件。当我的程序点击电子邮件6000(基于计数器)时,它结束。为什么它不在每封邮件中循环

int offset = 0;
int pageSize = 1000;
bool more = true;
ItemView view = new ItemView(pageSize, offset,OffsetBasePoint.Beginning);
view.PropertySet = PropertySet.FirstClassProperties;
FindItemsResults<Item> findResults = exchsvc1.FindItems(folder, view);

while (more)
{ 
    foreach (Item mail in findResults.Items)
    {
          do stuff
    }

    offset = pageSize;
    pageSize = pageSize + pageSize;
    view = new ItemView(pageSize, offset, OffsetBasePoint.Beginning);
    findResults = exchsvc1.FindItems(folder, view);

    more = findResults.MoreAvailable;     
}
int offset=0;
int pageSize=1000;
布尔莫尔=真;
ItemView视图=新的ItemView(页面大小、偏移量、偏移量基点.开始);
view.PropertySet=PropertySet.FirstClassProperties;
FindItemsResults findResults=exchsvc1.FindItems(文件夹,视图);
而(更多)
{ 
foreach(findResults.Items中的项目邮件)
{
做事
}
偏移量=页面大小;
pageSize=页面大小+页面大小;
视图=新项目视图(页面大小、偏移量、偏移量基点.开始);
findResults=exchsvc1.FindItems(文件夹,视图);
more=findResults.MoreAvailable;
}

我建议使用定义的过滤器按块提取项目。该方法允许指定一个表示用于缩小搜索结果范围的筛选器的值。

查看您的代码,我会说

offset = pageSize;
pageSize = pageSize + pageSize;
如果是您的问题,您应该将偏移量增加返回的项目数。如果查看代码,每次迭代都会将页面大小增加1000。节流意味着您在一个页面中无法获取更多的1000个项目,因此偏移量行实际上是在跳过项目,因为这种逻辑。只用

offset+=findResults.Items.Count


相反,页面大小不应更改,也不应超过1000,并且偏移量应始终基于返回的项目数。

“它结束”-在调试器下运行时,它会崩溃而不给您异常吗?哪一行代码会给你带来问题?更大的问题是,为什么你需要访问文件夹中的每一项?