C# 如何异步创建缓存以减少应用程序/页面的加载时间?

C# 如何异步创建缓存以减少应用程序/页面的加载时间?,c#,asynchronous,C#,Asynchronous,目前我有一个助手。它为数据集创建缓存以减少加载时间。在global.asax(正确的位置?)中,我创建了缓存。执行缓存创建时,加载时间增加12秒。现在我想创建异步缓存 [编辑错误的示例代码] public static void Create() { var cachekey = "api_TaskSchedulerApiV2Controller_Get"; var allItems = SchedulerTaskHelper.GetAllTasks();

目前我有一个助手。它为数据集创建缓存以减少加载时间。在global.asax(正确的位置?)中,我创建了缓存。执行缓存创建时,加载时间增加12秒。现在我想创建异步缓存

[编辑错误的示例代码]

public static void Create()
{
    var cachekey = "api_TaskSchedulerApiV2Controller_Get";
    var allItems = SchedulerTaskHelper.GetAllTasks();
    cache.Add(cachekey, allItems, new DateTimeOffset(DateTime.Now.AddHours(1)));
}
公共静态列表GetCachedItems()
{
return(List)cache.Get(“api_TaskSchedulerApiV2Controller_Get”);
}

我认为我将遇到的问题是,在尚未创建缓存的情况下检索数据集。有没有办法解决这个问题?谢谢:-)

但是当使用
wait
时,它不是同步执行的吗?(我对我的帖子进行了编辑)“但是当使用wait时它不是同步执行的吗?”-不是。你在想
.Result()
?@MickyD我明白你的意思。这不是那个意思。我的问题是如何使用ObjectCache类异步。没问题。已经编辑了你的问题。要考虑的一件事,这取决于你是否可以编辑底层缓存系统,是你想在启动时把所有的项目加载到缓存中,还是在第一次被请求(推迟)时加载一个项目。前者需要更长的时间,并且可以阻止任何读取请求。后者不会阻塞那么多,如果不需要立即使用可测量数量的项,则后者可能会更有效,因为缓存是根据需要随时间逐渐建立的。
public static List<TaskSchedulerGridViewModel> GetCachedItems()
{
    return (List<TaskSchedulerGridViewModel>)cache.Get("api_TaskSchedulerApiV2Controller_Get");
}