0

私は、200万をわずかに超えるアイテムを含むOutlookパブリックフォルダーから削除するアイテムを取得しようとしています。ただし、ページサイズが10の場合でも、FindItemsは、フォルダー内のすべてのアイテムをクエリしているかのように、戻るのに永遠に時間がかかります。これまでのところ、2時間経っても戻っていません。これを防ぐ方法はありますか?

var folder = GetPublicFolder(service);
folder.Load();
var items = folder.FindItems(new ItemView(10)
    {
        Traversal = ItemTraversal.Shallow
    });
4

1 に答える 1

0

これほど大きなフォルダからアイテムを取得する唯一の方法は、アイテムを検索するときにPropertySet.IdOnlyを使用し、それに応じてバッチサイズを調整することです。また、タイムアウトせずにこれをフィルタリングすることもできませんでした。

items = folder.FindItems(new ItemView(100)
                {
                    Traversal = ItemTraversal.Shallow,
                    PropertySet = PropertySet.IdOnly
                });

service.LoadPropertiesForItems(items, new PropertySet(ItemSchema.DateTimeReceived, 
                    ItemSchema.Subject));

次に、バッチを繰り返し処理し、ロードするものを最小限に抑えながら、アイテムで行うことを実行します。フィルタリングできない場合は、アイテムを上から取得することしかできません。そのため、処理されたアイテムをバッチ間で別のフォルダーに移動するために必要なほとんどのことを実行できます。

于 2012-04-23T23:18:39.263 に答える