c# - 禁用窗口

标签 c# wpf multithreading window

在我的应用程序中,我有一个Button。如果单击该按钮,则将执行针对数据库的选择,并且结果将显示在ListView中。
由于选择非常复杂,因此需要一些时间来检索数据。

当我单击Button时,应禁用Application-Window,直到加载数据。
但是,当我将Window的IsEnabled -Property设置为false时,加载数据后窗口将被禁用。

我试图用Window在另一个线程中禁用BackgroundWorker。但是然后我得到一个异常(exception),该窗口已被另一个线程使用。

在检索数据之前,如何禁用Window

最佳答案

您在后台线程中执行了错误的操作。您必须从UI线程影响UI,并且数据加载应在后台线程中进行。

最简单的方法是使用BackgroundWorker加载数据,并将其存储在类级变量中,并且当您的后台工作是complete时,UI重新启用并从类级变量中加载数据。

关于c# - 禁用窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874012/

相关文章:

c# - 内存屏障后和互锁操作后内存缓存一致性的时间

multithreading - 我们的 SOLR 实例似乎是单线程的,因此没有利用它的多进程主机

c# - 如何在 Xamarin.Forms 的代码中使用 TimeSpan 字符串格式?

c# - 什么时候使用 StringBuilder?

c# - 我可以在 XAML(.NET 4 Framework 之前)中指定泛型类型吗?

c# - INotifyPropertyChanged 困惑

json - Perl:线程与 JSON

c# - 在 asp.net 中创建 stackoverflow 类型的文本框,jquery

C# 可以将 "program"类部分用于控制台应用程序吗?

wpf - Viewmodel 的多个实例