我们在Winform应用程序中有一个摘要视图,该应用程序使用WebBrowser控件从网页显示摘要信息。我们正在使用它来获得一些丰富的表格布局,我们无法使用标准Winform控件来完成这些布局。第一次在客户端显示旋转需要一段时间的视图(我假设在背景中启动IE),并且该应用程序冻结了相当长的几秒钟。我正在考虑某种预加载机械师,这些机制将在后台启动,并希望有一些社区指导。

我正在考虑在应用程序启动时使用WebBrowser控件启动屏幕外或不可见的表单,或在应用程序开始时以某种侧线程启动IE实例。

有什么建议么?

有帮助吗?

解决方案

您可以在应用程序启动期间,在单独的线程中预加载控件。请注意STA公寓状态,如果您想操纵某些com对象(例如WebBrowser),则必须强制使用。

public static class ControlPreloader
{


    public static void PreloadAsync()
    {
        var thread = new Thread(Preload);
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }

    private static void Preload()
    {
        using (var hostForm = new Form())
        {
            var control = new WebBrowser();
            hostForm.Controls.Add(control);
            control.CreateControl();

            hostForm.Close();
        }
    }

}

其他提示

我没有经历过您提到的启动滞后,但是作为一个想法,在启动时,您可以导航到 about:blank. 。然后在浏览器的 DocumentCompleted 活动您可以启动通道到适当的URL。这可能有助于您了解是您的“ IE旋转”是否一直花费在内,或者是内容查询和渲染。

就您的体系结构而言,除非您的“丰富的表格布局”已经建立和功能齐全,否则您可以考虑使用WPF(它也具有良好的Winforms集成故事),以便将一些更丰富和更性感的控件进入您的应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top