下载开始时 WPF 窗口未完成渲染

发布于 2024-11-26 16:02:45 字数 660 浏览 2 评论 0原文

我正在编写一个小文件下载实用程序。 DownloadFile() 方法在我的 MainWindowWindow_Loaded() 事件上调用。由于 DownloadFile 方法是资源密集型的,因此当下载开始时,MainWindow 不会完成在屏幕上的渲染。下载完成后,我就看到了 WPF 窗体上的实际控件。

为了控制这个,我使用了以下 DoEvents() 代码,但它仍然不起作用。我在 Form 构造函数中的 InitializeComponent() 之后、在 Window_Loaded 事件中调用 DownloadFile() 之前调用此函数。

private void DoEvents()
        {
            Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                                  new Action(delegate { }));
        }

I am writing a small file download utility. The DownloadFile() method is called on Window_Loaded() event of my MainWindow. Since the DownloadFile method is resource intensive, the MainWindow does not finish rendering on screen when the download starts. It is just after the download is finished that I come to see the actual controls on my WPF Form.

To control this, I am using following DoEvents() code, but still it is not working. I am calling this function after InitializeComponent() in the Form constructor and just before calling DownloadFile() in the Window_Loaded event.

private void DoEvents()
        {
            Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                                  new Action(delegate { }));
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

淡淡的优雅 2024-12-03 16:02:45

始终建议在单独的线程中完成所有服务器访问并下载相关内容。您可以在以下链接中查看如何操作。

http://bathinenivenkatesh.blogspot.com/2011/07 /wpf-build-more-responsive-ui.html

it is always suggested to do all the server hits and download related things in a separate thread. You can see how to that in following link.

http://bathinenivenkatesh.blogspot.com/2011/07/wpf-build-more-responsive-ui.html

执手闯天涯 2024-12-03 16:02:45

您应该使用 BeginInvoke(使用“后台”选项)并将 DownloadFile 放在那里。

You should use BeginInvoke instead (with the Background option) and put the DownloadFile there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文