|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
||||||||||||
Отмена async Task08.04.2015, 21:32. Показов 3147. Ответов 14
Метки нет (Все метки)
Хочу:
1) запускать асинхронный метод = ok 2) выводить в textbox процесс работы = ok 3) ждать завершения работы = ok 4) после завершения работы выводить время работы = ok 5) иметь возможность останавливать метод по нажатию кнопки = проблема Имеем такой код:
При нажатии кнопки отмены на строчке
Добавлено через 2 минуты Вопрос N 2. Возможно ли в любой момент проверить, выполняется в данный момент task или нет? Или это можно сделать, только устанавливая и снимая флаги в начале и конце таска?
0
|
||||||||||||
| 08.04.2015, 21:32 | |
|
Ответы с готовыми решениями:
14
Task.Wait async Метод Возврат нескольких переменных из метода с async Task Task на Task или масло масленное? |
|
|
||||
| 08.04.2015, 21:49 | ||||
|
0
|
||||
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
|||||||
| 08.04.2015, 21:54 [ТС] | |||||||
|
Добавлено через 3 минуты Я пробовал так:
0
|
|||||||
|
|
|
| 08.04.2015, 21:57 | |
|
0
|
|
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
||
| 08.04.2015, 22:00 [ТС] | ||
|
0
|
||
|
|
|
| 08.04.2015, 22:02 | |
|
0
|
|
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
|||||||||||
| 08.04.2015, 22:05 [ТС] | |||||||||||
|
Все, понял!!
Вы подсказали правильно - внутри Parallel.ForEach. Но только я ошибочно написал:
А нужно было написать
Хотелось бы получить ответ на второй вопрос: возможно ли в любой момент проверить, выполняется в данный момент task или нет? Или это можно сделать, только устанавливая и снимая флаги в начале и конце таска?
0
|
|||||||||||
|
|
||
| 08.04.2015, 22:07 | ||
|
И самое главное, что мне не совсем понятно в вашем коде - зачем вы мешаете в одну кучу Task, async-await и еще Parallel.ForEach() вдобавок?
У меня складывается впечатление, что проблему можно решить элегантнее. Добавлено через 1 минуту
0
|
||
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
||
| 08.04.2015, 22:12 [ТС] | ||
|
- не подвешивалась главная форма; - промежуточные результаты выводились в textbox; - можно было отменить обработку в любой момент; - сразу по окончании работы выполнить другую работу. Если запустить обработку через task, тогда для каждого файла создается отдельный поток - получается слишком много потоков. Parallel.Foreach для такой задачи более эффективен, поскольку создает необходимое количество потоков (можно даже указывать количество). То есть task - это как треды, а Parallel.Foreach - это как тредпул, только более продвинутый. Чтобы Parallel.Foreach не подвешивал форму программы, я его запускаю через Task. async-await нужен для того, чтобы сразу после выполнения таска можно было выполнить какое-то действие (в моем случае - вывести что-то на экран). Это можно сделать через task.continuewith, но тогда код получается совсем непонятным. Если указанные задачи можно решить как-то элегантнее, то мне бы очень хотелось узнать, как это сделать
0
|
||
|
|
|||||
| 08.04.2015, 22:23 | |||||
|
Добавлено через 1 минуту И самое главное - инкапсулировать все в отдельном классе, не мешая логику обработки и UI.
0
|
|||||
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
||||
| 08.04.2015, 22:25 [ТС] | ||||
|
http://stackoverflow.com/quest... y-startnew
0
|
||||
|
|
|
| 08.04.2015, 22:29 | |
|
Suppir, если уж вам так необходимо параллельное выполнение, то почему вы не обратили внимание на PLINQ?
![]() Он имеет возможности более тонкой настройки секционирования, да и сам по себе удобнее.
0
|
|
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
|
| 08.04.2015, 22:34 [ТС] | |
|
Я еще даже LINQ не изучал, так как все время программировал на .NET Framework 2.0 (для удобства пользователей). На PLINQ даже не заглядывался
![]() Сейчас, вот, решил одну программу на .NET Framework 4.0 переписать, т.к. сильно нужны Task'и. А как можно применить PLINQ к указанной задаче? Я думал, что PLINQ нужен для запросов, по типу SQL, но которые выполняются многопоточно.
0
|
|
|
|
||
| 08.04.2015, 22:38 | ||
|
Ну и главное - используйте инкапсуляцию, уберите все в отдельный класс (классы), не мешайте бизнес-логику и отображение. http://rsdn.ru/article/dotnet/... _3.xml#EZG
0
|
||
|
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
|
|
| 08.04.2015, 22:40 [ТС] | |
|
Спасибо, почитаю.
0
|
|
| 08.04.2015, 22:40 | |
|
Помогаю со студенческими работами здесь
15
Отмена одного Task в массиве Task
Многопоточность с async/await и Task Отмена Task Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|