Просьба учебник для VB.NET Thread - PullRequest
1 голос
/ 07 июня 2011

У меня есть класс с именем TestClass

Public Class TestClass

    Private _Count As Integer


    Public ReadOnly Property Count() As Integer
        Get
            For i As Integer = 0 To 999999999
                Threading.Thread.Sleep(100)
            Next

            Return 100
        End Get
    End Property

End Class

Форма основная форма, я называю класс. Вот мой код:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim tg As New TestClass
    MsgBox(tg.Count)

End Sub

Когда я звоню tg.Count из основной формы, основная форма перестает отвечать. Как не дать моей форме не отвечать. Пользователь может получить доступ к другому меню, а не ждать результата. Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Используйте BackgroundWorker, чтобы запустить его в рабочем потоке.Это будет держать ваш графический интерфейс реагировать.http://www.dreamincode.net/forums/topic/88605-the-background-worker/

Перетащите компонент BackgroundWorker из панели инструментов в форму.Теперь поместите ваш счетчик в обработчик событий BackgroundWorker_DoWork, который автоматически сгенерирован для вас.Все, что вам нужно сделать сейчас, это позвонить по номеру RunWorkerAsync.

Надеюсь, это поможет!

0 голосов
/ 07 июня 2011

Ваш цикл повторяется от 0 до 999999999 и задерживает 100 мс каждый цикл, который останавливает текущий поток. Лучшим решением было бы использовать таймер, проверить свое состояние и перезапустить таймер, если это необходимо. Таким образом, ваш основной поток формы всегда будет отзывчивым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...