0

在我的 C# windows 应用程序中

我有这个示例 c# class public class clsRslCache { private Cache oCache = HttpRuntime.Cache; }

我在 main 方法中创建了这个类的一个实例,在应用程序启动期间它会导致大约 2-3 分钟的延迟,然后在随后的请求中它会立即加载应用程序。

我不确定为什么第一次发生延迟。如果我在机器上等待 5 分钟,最终不会在其上做任何事情,而下次我启动 Windows 应用程序时,它会显示相同的行为。

有没有人对此有任何想法。

*注意:您需要在您的 Windows 应用程序中引用 System.web.dll。

谢谢

4

1 回答 1

0

好的,假设 HttpRuntime.Cache 是您从 ASP.Net 使用的唯一东西:

来自 MSDN 的 HttpRuntime 的类描述:

为当前应用程序提供一组 ASP.NET 运行时服务。

因此,在 System.web.dll 中存在 Web 服务器的一小部分,这是访问它的一个主要 API。第一次调用 System.web.dll 时,必须初始化一些东西,这需要一些时间(尽管几分钟是令人惊讶的,10 - 20 秒似乎更有可能)。

您可以尝试的一件事是在子线程中初始化:

volatile bool isCacheReady = false;
Cache cache = null;
System.Threading.Thread t1 = new System.Threading.Thread(delegate() {
    cache = HttpRuntime.Cache;
    isCacheReady = true;
});
t1.Start();

// periodically check if cache is available yet (not here in this thread though):
if( isCacheReady )
{
    // do something with cache
}

当然,这仍然意味着您的应用程序在这 2-3 分钟内不会有缓存,但至少它不应该阻止启动。(而且我应该看得更深,因为 2-3 分钟似乎太长了,应该有一种方法可以加快速度或使用其他开销较小的缓存工具)

于 2013-07-12T20:07:43.983 回答