Выделить процесс занимающий много времени в отдельный поток - Visual Basic .NET
Формулировка задачи:
При запуске приложения нужно обработать значительное количество данных. Например, исследовать содержимое папки с несколькими тысячами файлов. Эта операция занимает на среднем компьютере более 10 секунд. Если выполнение этой операции производить в Form_Load это затормозит загрузку приложения. Причём результаты выполнения этой длительной операции понадобятся не сразу после загрузки формы, а чуть позднее. А если в Form_Load вставить запуск второго потока в котором и производить эту операцию, не мешая при этом процессу запуска приложения? Если это возможно, то как это реализовать?
Вот приблизительный пример для демонстрации описанных выше "тормозов":
Вот нашёл в одной из тем (ответ Sklifosofsky):
Но почему-то цикл For совершается довольно медленно (если не использовать второй поток, цикл завершается мгновенно).
И не могу догадаться как сделать, чтобы в метке появился конечный результат вычисления цикла, а не последовательный перебор значений.
Решение задачи: «Выделить процесс занимающий много времени в отдельный поток»
textual
Листинг программы
Public Class Form1 Private Delegate Sub _dlg() Private CallBack As New _dlg(AddressOf ShowResult) Dim count As Long Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim th As New MethodInvoker(AddressOf LongProc) th.BeginInvoke(Nothing, Nothing) End Sub Sub LongProc() For i As Long = 0 To 4000000000 count += i Next Try Me.Invoke(CallBack) Catch ex As Exception Exit Sub End Try End Sub Sub ShowResult() Label1.Text = count.ToString End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д