none
Зависает в потоке WPF RRS feed

  • Вопрос

  • Опять не могу понять что не так в потоках. Подключаю библиотеку к приложению с функцией получения текста из интернета. При загрузке приложения вызываю эту функцию check:

     Private Delegate Sub ThreadD()
    
    
       
        Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
            Dim OneWay = New ThreadD(AddressOf FonLoad)
            OneWay.BeginInvoke(Nothing, Nothing)
            
        End Sub
        Private Sub FonLoad()
            Dispatcher.Invoke(New Action(Sub()
                                             Dim DescrOnClass = New Base_Lite
                                             DescrOnClass.Check(Panel_Load, RichTextBox, Dispatcher)
                                             
                                         End Sub))
        End Sub

    В функции получаем текст так - 

    IDispatcher.BeginInvoke(Sub()
    PathFiles = Loader.DownloadString("АДРЕСС")
    end sub)

    Запускаем - все зависает до получения текста...

    25 февраля 2012 г. 19:13

Ответы

Все ответы

  • Даже если обращаться к процедуре не в библиотеке, все равно зависает полностью...
    26 февраля 2012 г. 8:41
  • Воспользуйтесь BackgroundWorker-ом, не ошибетесь :) Только работу с View нужно будет делать в RunWorkerCompleted.

    Ещё вариант - сделать загрузчик асинхронным.

    • Предложено в качестве ответа Abolmasov Dmitry 27 февраля 2012 г. 7:40
    • Помечено в качестве ответа Abolmasov Dmitry 29 февраля 2012 г. 13:04
    26 февраля 2012 г. 20:41
    Отвечающий
  • Вы запускаете поток, а из него сразу возвращаетесь в UI поток - Dispatcher.Invoke. Вызывайте Dispatcher.Invoke после выполенения кода, только тогда, когда вам нужно что-то изменить на форме. Т.е. после выполения Loader.DownloadString("АДРЕСС")

    Для связи [mail]

    27 февраля 2012 г. 7:40