Как правильно использовать метод BeginInvoke? - PullRequest
0 голосов
/ 25 января 2012

У меня есть этот код.Это работает, но это замораживает пользовательский интерфейс.То, что я хочу знать, это как использовать метод WPF BeginInvok в основном?

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

1 Ответ

3 голосов
/ 25 января 2012

Ваш делегат будет выполнен в потоке пользовательского интерфейса .Вот для чего Dispatcher.BeginInvoke.Я предполагаю, что вы действительно хотите выполнить этот делегат в фоновом потоке ... тогда вы должны использовать Dispatcher.BeginInvoke, чтобы вернуть обратно в поток пользовательского интерфейса, чтобы позже обновить пользовательский интерфейс.

С точки зрения получения фонового потока вы могли бы:

  • Использовать пул потоков напрямую (ThreadPool.QueueUserWorkItem)
  • Использовать BackgroundWorker
  • Создать новую тему
  • Использовать Task.Factory.StartNew (если вы используете .NET 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...