缓存控件实例

时间:2009-11-07 16:40:38

标签: winforms

我的应用程序有一个导航框架,其中每个数据输入屏幕都是作为用户控件实现的。其中一些UserControl非常大,在慢速系统上可能需要几秒钟才能构建。

为了加快速度,我正在考虑缓存这些控件实例,而不是每次需要时实例化它们。在测试中,这似乎可以加快速度。

非常简化,我基本上是这样做的:


public void Navigate(Type pageType)
{
    Control page = GetOrCreatePage(pageType);
    hostPanel.Clear();
    hostPanel.Add(page);
}

private Control GetOrCreate(Type controlType)
{
    if(!cache.Contains(controlType))
        cache.Add(controlType, Activator.CreateInstance(type);    
    return cache[type];
}

我的问题是 - 我应该这样做吗?我只是问,因为我没有看到很多这方面的例子,我必须做大量的工作或重构和重新思考以支持控制实例(管理处理,事件订阅等)。我想它只是感觉不一样所以我想确保这是好的,我不会踩到我以后会闻到的东西......

感谢任何反馈。

1 个答案:

答案 0 :(得分:0)

我会考虑为什么实例需要很长时间来创建,很可能是因为有些数据需要花费时间来加载,而且可能更好的方法是缓存这些数据。

相关问题