|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
Добрый день. Имеется класс, в котором функцией getCases делается выборка из базы, в цикле создаются какие-то объекты, и возвращает она список с этими объектами. Далее эта функция вызывается в форме. Как правильно выполнять эту функцию в потоке? Чтобы во время ее выполнения на форме двигался ProgressBar? До недавнего времени цикл находился в форме, там вроде понятно, как это сделать, а если цикл в другом классе...? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 13:55 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
kat3181, к слову, getCases() принимает кучу аргументов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 13:57 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
kat3181, Прогрессбар внутри формы и async. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 14:18 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
Petro123kat3181, Прогрессбар внутри формы и async. Только начинаю с потоками работать, не совсем понятно... То есть цикл нужно вынести в отдельную функцию, которую потом вызвать через await? А с прогресс бар как? Что-то типа такого? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 15:32 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
kat3181То есть цикл нужно вынести в отдельную функцию, которую потом вызвать через await?да. Делай. Прогресс потом. Слона надо есть по частям. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 15:46 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
BackgroudWorker посмотрите, он поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 15:56 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
Код не рабочий- накидал по быстрому основные моменты, чтобы на мысль натолкнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 16:10 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
Petro123kat3181То есть цикл нужно вынести в отдельную функцию, которую потом вызвать через await?да. Делай. Прогресс потом. Слона надо есть по частям. Вроде работает, но без прогресса... Только для прогресса надо бы знать, сколько итераций будет в цикле, наверно? Выполнить запрос, посчитать, сколько будет объектов, и передать в форму? А потом уже создавать объекты...? Не понятно, как заставить прогресс двигаться ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 16:34 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
vb_sub, Супер_Пав, спасибо, буду разбираться ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 16:34 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
какая разница в каком классе цикл? используйте Progress<T> : IProgress<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 16:38 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
kat3181сколько итерацийдо этого как решал? Либо узнать либо бесконечный прогрессбар и работай его не дожидаясь. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2018, 16:55 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
а если так? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 11:04 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
jenya7а если так?а где тут поток и входные выходные в него? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 11:47 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
Petro123jenya7а если так?а где тут поток и входные выходные в него? Инвокер обеспечит изменение контрола в другом потоке. У меня работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 11:53 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
использовать Invoke нужно вот так. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Но это актуально только тогда, когда у вас есть указатель на объект элемента управления. IProgress<T> более универсальный подход, но у него тоже есть свои подводные камни, если вы создаете объект Progress<T> не в STA потоке, то выполняться он будет в том потоке, в котором вы его создали или произвольном, точно уже не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 12:22 |
|
Поток и ProgressBar
|
|||
---|---|---|---|
#18+
jenya7Инвокер обеспечит изменение контрола в другом потоке. У меня работает.устарело. Сейчас надо не контрол менять, а класс подписать на событие. А контролы ГУИ еще дальше от этого дела и потоков. Типо биндинг, MV***, Action и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 13:13 |
|
|
start [/forum/topic.php?fid=20&fpage=25&tid=1399161]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 414ms |
0 / 0 |