Итак, я играю с Multi Threading. У меня есть определенная форма, которая заставляет тихо всплывать, поскольку она загружает данные из файла. Моя идея состояла в том, чтобы загрузить данные в фоновом режиме, но все равно отображать форму и иметь сообщение в форме, показывающей, что загружаются дополнительные данные.Используйте Задачи/Многопоточность для загрузки данных и отображения UI
У меня все сделано, за исключением того, что я не уверен, как получить уведомление, что поток сделан и готов передать мне данные в виде словаря.
Это, насколько я получил: P
Dim t1 As Task(Of Dictionary(Of String, Double()))
Private Sub cbchannels_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbchannels.SelectedIndexChanged
t1 = Task(Of Dictionary(Of String, Double())).Factory.StartNew(Function() Load_Data())
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If t1.IsCompleted Then
data = t1.Result
End If
End Sub
Я знаю, что задача имеет возможность проверить, если его завершения и получить результаты
t1.IsCompleted
t1.Result
использует таймер постоянно проверять, завершена ли задача? И что я делаю, имеет смысл? Я не хочу использовать BackgroundWorker.
Но как зарегистрировать обратный звонок? Я не смог заставить его работать. Любая попытка использовать ожидание заставит программу ждать в этой точке –
.ConfigureAwait (false); Кроме того, вы можете столкнуться с тупиками ... Возможно, вам захочется немного поразмыслить по шаблонам асинхронного ожидания для UI. – Vivek
Опубликовать текущий код, который у вас есть. Невозможно диагностировать без него. – usr