【发布时间】:2011-04-22 15:39:32
【问题描述】:
我正在拔头发试图弄清楚为什么正常的 Dispatcher.Invoke 命令不能用于重绘我的窗口,但现在我的问题似乎与被禁用的内容有关。我正在使用 Dotnet 4.0 完整框架。
如果我使用
private void DoSomething()
{
HandleBusyEnableDisable(false);
DoSomethingThatKeepsItBusy();
HandleBusyEnableDisable(true);
}
private void HandleBusyEnableDisable(bool enabling)
{
Cursor = enabling ? Cursors.Arrow : Cursors.Wait;
CanvasFunctions.IsEnabled = enabling;
CanvasRight.IsEnabled = enabling;
CanvasRight.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Render, EmptyDelegate);
我看到光标发生了变化,但内容看起来并没有被禁用。如果我添加
CanvasRight.Opacity = enabling ? 1 : .5;
然后我认为它有时会起作用。我还有什么可以做的吗?
正在运行的任务是验证用户输入的数据,因此它更容易在 GUI 线程上运行。这应该没那么难。
【问题讨论】:
标签: c# .net wpf user-interface refresh