我想在用户单击某个按钮时立即禁用该按钮,以阻止他们再次单击该按钮。在用户单击该按钮时会执行许多检查,而且这些检查似乎是在UI更改发生之前完成的。
我试图通过为按钮使用一个单独的线程来做到这一点,但它似乎仍然只在检查完成后更新。
下面是我使用的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread t = new Thread(new ThreadStart(
delegate
{
Action action = () => btnStart.IsEnabled = false;
Dispatcher.BeginInvoke(action);
}
));
t.Start();
// Run the main routine;
BeginBootstrapping();
}
如何立即禁用该按钮?
2条答案
按热度按时间ncecgwcz1#
您可以编写一个
async
Click处理程序,该处理程序使用Task
来运行一些后台工作:当然,如果您可以让长时间运行的方法本身变得可等待,就像
您可以不使用
Task.Run
来调用它,例如yws3nbqq2#
就像Evk在他的评论中说的那样,这会在UI线程的主线程中禁用按钮,然后在另一个线程上运行剩下的工作。注意我没有使用Dispatcher,因为Dispatcher实际上也是UI线程,使用它会冻结UI。