我在库中创建了这个函数。我将此功能用于控制台和WPF应用程序。在我的控制台应用程序中,此功能在不到一秒的时间内完成,最多可收集80个项目和小型集合,例如5.
此外,在我的WPF应用程序中,当我运行此函数时,项目集合最多为80,需要一分钟才能完成执行,但最多5项的项目在不到一秒的时间内完成执行。
C#代码:
<clinit>
答案 0 :(得分:0)
正如我的评论中所提到的,如果你想加快这些工作的处理速度,你肯定可以在循环上做一些工作,让逻辑与所有模板名称并行应用。
public async Task<Dictionary<string, string[]>> GetTemplates(string showName)
{
Dictionary<string, string[]> d = new Dictionary<string, string[]>();
// Get element collection uri of show "DemoShow"
var elementCollectionUri = GetElementCollectionUri(vizServiceDocURL, showName);
var templateCollectionUri = GetTemplateCollectionUri(elementCollectionUri);
var templateNames = GetListOfTemplateName(templateCollectionUri);
//get the name and links from each show and add them to the dictionary
// Keep a temporary List of Tasks
List<Task> allTasks = new List<Task>();
foreach (string templateName in templateNames)
{
string localTemplateName = templateName;
// Apply our logic and add to our Dictionary in a task
Task jobTask = Task.Run(() =>
{
var templateCollectionEntryUri = GetTemplateCollectionEntryUri(templateCollectionUri, localTemplateName);
var elementModelUri = GetTemplateElementModelUri(templateCollectionUri, localTemplateName);
string[] links = new string[2] { templateCollectionEntryUri, elementModelUri };
d.Add(localTemplateName, links);
});
// Add the task to our temp collection
allTasks.Add(jobTask);
}
// Wait for all tasks to finish, WhenAll is non-blocking unlike WaitAll.
await Task.WhenAll(allTasks);
return d;
}