如何正确使用BeginInvoke方法?

时间:2012-01-25 11:33:59

标签: c# wpf

我有这个代码。它工作但它冻结了UI。 我想知道的是如何核心使用WPF BeginInvok方法?

private void ValidateAuthURL_Click(object sender, RoutedEventArgs e)
{
    ((Button)sender).Dispatcher.BeginInvoke(DispatcherPriority.Input, 
        new ThreadStart(() =>
        {
            bool result = false;
            try
            { 

1 个答案:

答案 0 :(得分:3)

您的委托将在UI线程中执行。这就是Dispatcher.BeginInvoke的用途。我假设您确实想要在后台线程中执行该委托...然后您应该使用Dispatcher.BeginInvoke返回到UI线程以便更新用户界面稍后。

在获取后台线程方面,您可以:

  • 直接使用线程池(ThreadPool.QueueUserWorkItem
  • 使用BackgroundWorker
  • 开始一个新主题
  • 使用Task.Factory.StartNew(如果您使用的是.NET 4)