这项任务应该很简单,但我尝试的任何工作都没有。我只是想在单击按钮时,以及在加载和验证数据时让文本消失。
我尝试过以下操作,但不强制重绘:
private delegate void InlineDelegate();
private void btnLogon_Click(object sender, RoutedEventArgs e)
{
lblInvalidLogon.Dispatcher.Invoke(new InlineDelegate(() =>
{
lblInvalidLogon.Content = string.Empty;
lblInvalidLogon.InvalidateVisual();
}), System.Windows.Threading.DispatcherPriority.Render, null);
//
// Process to verify logon credentials...
//
}
我也试过了DispatcherPriority.Send
,并且我在Invoke之后放置了一个Thread.Sleep
来给它足够的时间来更新UI,但我尝试过的任何内容都不会强制UI在身份验证过程继续时更新。
答案 0 :(得分:1)
您需要将登录验证移动到另一个线程,它阻止了UI线程。
正在努力解决这个问题,并在他发表评论的同时提出解决方案。我已经解决了以下问题:
private delegate void InlineDelegate();
private void btnLogon_Click(object sender, RoutedEventArgs e)
{
lblInvalidLogon.Content = string.Empty;
lblInvalidLogon.Dispatcher.Invoke(new InlineDelegate(() =>
{
//
// Process to verify logon credentials...
//
}), System.Windows.Threading.DispatcherPriority.Background, null);
}