У меня есть многопоточная программа VB.net. и я хочу пройти через каждый поток и получить сеанс от каждого из них.Сохранить сеанс из рабочего потока при закрытии
вот код, который создает потоки.
Sub Run():
Timer1.Enabled = True
AddHandler LoginTimer.Elapsed, AddressOf doWork
LoginTimer.Interval = 500
LoginTimer.Enabled = True
End Sub
и вот DoWork() к югу:
sub doWork()
For id = 0 to val(textbox1.text) ' get how many thread should we run
Dim th As New Thread(AddressOf Work) ' what the threads should do.
th.IsBackground = True
th.Start()
Next id
Теперь каждый раз, когда я закрываю программу, потоки стали прерваны, и я потерял все вещи, что эти потоки работают на. Итак, я хочу сохранить сеансы. и в следующий раз, когда я запустил, я просто «возобновил» его, загрузив сеансы. Что-то вроде:
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Dim sessions As New List(Of String)
For Each thread In xxxx ' here where should I do a loop through the running threads
sessions.Add(thread.session) ' get the session from the thread
Next thread
End Sub
Заранее спасибо
EDIT: Я сумел исправить мою проблему, создав «Public Shared ShoulIupadteNow как Boolean», так как резьбе я работаю в непрерывном цикле они все проверка времени, если значение Boolean установлено в true. и когда он (я обычно нажимаю на кнопку, которая устанавливает ее в true в моей форме), она начинает обновляться, имея общедоступные общие lstsessions в качестве нового hashset (строки) таким образом, у меня не будет повторяющихся сеансов и после завершения всех потоков обновляя, я просматриваю все содержимое хэшета, а затем сохраняю его в txt-файлах.
Когда вы закрываете приложение, все делается. Если вам нужно возобновить операцию при следующем запуске, вам нужно будет сохранить свой «сеанс» в более постоянном хранилище - например, в базе данных SQL или XML-файле. – InbetweenWeekends
Это именно то, что я пытаюсь сделать. но как я могу получить эти сессии в базе данных SQL или XML. Мне нужно получить их из работающих потоков, а затем сохранить их. –
Извините, что вы издеваетесь немного расплывчато, поэтому мой ответ также немного общий. Отправной точкой будет запись любого объекта, который вы накладываете на стол в начале вашего метода «Работа» , и удалите его в конце 'Work'.Когда вы закрываете форму во время выполнения этих потоков, восстановленные будут вашей очереди на обработку. Form_Load (или где-нибудь еще) может затем загрузить оставшиеся/оставленные записи из предыдущего закрытия и обработать их, удалив каждый, когда это будет сделано. – InbetweenWeekends