我们有一个 WPF 应用程序(实际上是一个 VSTO WPF 应用程序)。在某些控件上,有多个元素,当单击它们时,会从 Web 服务加载数据并更新 UI。现在,我们同步执行这些 Web 请求,阻塞 UI 线程,直到响应返回。这会阻止用户在数据加载时点击应用程序的其他部分,可能使应用程序处于无效状态以处理返回的数据。
当然,如果请求时间很长,应用程序就会变得无响应。理想情况下,在此期间我们希望取消按钮处于活动状态,但除此之外没有其他控件处于活动状态。是否有巧妙的方法可以做到这一点,或者我们必须切换请求以使用 BackgroundWorker 异步执行,并编写一些内容,在请求进行时禁用除了取消按钮以外的所有控件?
编辑:对于我们已经预计需要长时间运行的操作(如下载文件等),我们会弹出进度对话框窗口。案例在于当您预计的操作速度相当快(最多几秒钟),但偶尔需要更长时间时。在这种情况下,短暂地弹出整个窗口会分散注意力。
当然,如果请求时间很长,应用程序就会变得无响应。理想情况下,在此期间我们希望取消按钮处于活动状态,但除此之外没有其他控件处于活动状态。是否有巧妙的方法可以做到这一点,或者我们必须切换请求以使用 BackgroundWorker 异步执行,并编写一些内容,在请求进行时禁用除了取消按钮以外的所有控件?
编辑:对于我们已经预计需要长时间运行的操作(如下载文件等),我们会弹出进度对话框窗口。案例在于当您预计的操作速度相当快(最多几秒钟),但偶尔需要更长时间时。在这种情况下,短暂地弹出整个窗口会分散注意力。