ただ、このような結果列挙する:
foreach (var item in yourQuery) {
// this item has arrived - update progress
}
をEF6クエリの一部のバージョンではデフォルトでバッファリングされていることに注意してください(しかし、彼らは私の知る限りではストリーミングされた最新バージョンでは)、そのため、バージョンのためにあなたがこれを行うために必要がある場合があります。
今
foreach (var item in yourQuery.AsStreaming()) {
}
、クエリが返されますどのように多くの項目、事前に知っておく必要があり、適切な進捗状況を報告します。それを知る唯一の方法(クエリの形式のために何らかの形でそれを知っている場合を除き)は、最初にクエリを実行することです。
var total = yourQuery.Count(); // will make DB query
var results = new List<YourEntityType>();
foreach (var item in yourQuery) {
results.Add(item);
var progress = (float) results.Count/total;
ReportProgress(progress);
}
出典
2017-03-03 09:18:34
Evk