0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 15
|
||||||
1 | ||||||
Многопоточное07.08.2019, 08:24. Показов 1095. Ответов 8
Метки нет (Все метки)
Добрый день, есть код не свой, раскидал в него вывод текста с информацией о потоке. Только изучаю тему, и насколько понял Task.Factory.StartNew() должен создавать новый поток, как и Parallel.ForEach() тоже должен же да?
Насовав повсюду принт текста, у меня итоге везде показывает 1 поток, даже там, где я ожидаю, что должны появляться новые(startNew,foreach). Причем, если обращаться к форме не через invoke.делеегат, то выдает ошибку, о вторичном потоке(но это я хотя бы знаю почему). Может кто прояснить на этом примере почему везде 1 thread показывает.
0
|
07.08.2019, 08:24 | |
Ответы с готовыми решениями:
8
многопоточное вычисление Многопоточное скачивание Многопоточное программирование Многопоточное программирование |
1 / 1 / 0
Регистрация: 17.01.2019
Сообщений: 16
|
|
07.08.2019, 11:50 | 2 |
я, конечно, могу ошибаться, но Task без await будет выполняться всегда в основном потоке.
да, и других потоков вы не создаете, чтобы они у вас менялись. хотя я могу ошибаться, люди поумней меня поправят ) почитайте про асинхронность и await Task. Может это вам нужно.
1
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|
07.08.2019, 12:54 | 3 |
StartNew создает не поток а задачу. А то как эта задача будет работать, зависит от перечисления TaskCreationOptions . По умолчанию TaskCreationOptions = None
1
|
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
07.08.2019, 19:39 | 4 |
Потому что:
this.Invoke() Вы пинками заставляете выполняться "рабочему коду" (Action)delegate в потоке пользовательского интерфейса.Работа запущенной Task вообще никак не зависит от await.
0
|
Модератор
|
||
07.08.2019, 20:30 | 5 | |
Из https://docs.microsoft.com/ru-... mework-4.8
То есть Task не создаёт поток. А использует свободный поток из пула.
0
|
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
07.08.2019, 21:03 | 6 |
Элд Хасп, там справка тоже как-то коряво написана. Смешали в кучу и устаревший хлам, и новое.
На Хабре ещё на заре советской власти подчеркнули: ------ Task.Wait() наповал убивает. Хоть бы там отметили, что нельзя использовать.
0
|
3676 / 2588 / 718
Регистрация: 02.08.2011
Сообщений: 6,959
|
|
07.08.2019, 21:16 | 7 |
Почему нельзя? В доках отмечено, что он блокирует текущий поток.
0
|
6494 / 3905 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
07.08.2019, 21:18 | 8 |
IamRain, сейчас мы находимся в теме, созданной новичком.
А новичок может и случайно поверить этой странице справки (не докрутив до последней строчки, где ссылка на уже правильную справку)
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
07.08.2019, 21:59 | 9 |
я так и не понял в каком месте справка обманывает
это где вообще? в этой теме одна ссылка, первое же упоминане Wait по ней сопровождается комментарием о блокировке потока
0
|
07.08.2019, 21:59 | |
07.08.2019, 21:59 | |
Помогаю со студенческими работами здесь
9
Многопоточное приложение Многопоточное грязное чтение Многопоточное умножение матриц Асинхронное vs. Многопоточное программирование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |