本文整理汇总了C#中Report.BuildReport方法的典型用法代码示例。如果您正苦于以下问题:C# Report.BuildReport方法的具体用法?C# Report.BuildReport怎么用?C# Report.BuildReport使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Report
的用法示例。
在下文中一共展示了Report.BuildReport方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Repair_Helper
private Yield Repair_Helper(bool checkOnly, bool verbose, Result<XDoc> result) {
var count = 0;
Action throttle = () => {
if(++count % 100 == 0) {
Thread.Sleep(100);
}
};
// check pages and their comments
var pages = new HashSet<ulong>();
var pageUnitOfWork = new List<PageBE>();
var pageReport = new Report("pages", checkOnly, verbose);
var commentUnitOfWork = new List<Tuplet<CommentBE, PageBE>>();
var commentReport = new Report("comments", checkOnly, verbose);
foreach(var page in _pageBL.GetAllPagesChunked(_indexNameSpaceWhitelist)) {
throttle();
pages.Add(page.ID);
pageUnitOfWork.Add(page);
uint commentCount;
foreach(var comment in _commentBL.RetrieveCommentsForPage(page, CommentFilter.NONDELETED, false, null, SortDirection.UNDEFINED, 0, uint.MaxValue, out commentCount)) {
throttle();
commentUnitOfWork.Add(new Tuplet<CommentBE, PageBE>(comment, page));
if(commentUnitOfWork.Count != 1000) {
continue;
}
yield return Coroutine.Invoke(ProcessComments, commentUnitOfWork, commentReport, new Result());
commentUnitOfWork.Clear();
}
if(pageUnitOfWork.Count != 1000) {
continue;
}
yield return Coroutine.Invoke(ProcessPages, pageUnitOfWork, pageReport, new Result());
pageUnitOfWork.Clear();
}
yield return Coroutine.Invoke(ProcessPages, pageUnitOfWork, pageReport, new Result());
yield return Coroutine.Invoke(ProcessComments, commentUnitOfWork, commentReport, new Result());
// check files
var fileUnitOfWork = new List<ResourceBE>();
var fileReport = new Report("files", checkOnly, verbose);
foreach(var att in _attachmentBL.GetAllAttachementsChunked()) {
if(!pages.Contains(att.ParentPageId.GetValueOrDefault())) {
continue;
}
throttle();
fileUnitOfWork.Add(att);
if(fileUnitOfWork.Count != 1000) {
continue;
}
yield return Coroutine.Invoke(ProcessFiles, fileUnitOfWork, fileReport, new Result());
fileUnitOfWork.Clear();
}
// check users
var userUnitOfWork = new List<UserBE>();
var userReport = new Report("users", checkOnly, verbose);
foreach(var user in _userBL.GetAllUsers()) {
throttle();
userUnitOfWork.Add(user);
if(userUnitOfWork.Count != 1000) {
continue;
}
yield return Coroutine.Invoke(ProcessUsers, userUnitOfWork, userReport, new Result());
userUnitOfWork.Clear();
}
yield return Coroutine.Invoke(ProcessUsers, userUnitOfWork, userReport, new Result());
var aggregate = new Report("report", checkOnly, verbose);
result.Return(aggregate.BuildReport(pageReport, commentReport, fileReport, userReport));
}