Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для sashf1999
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 61

Как запускать несколько Task без зависания?

13.02.2017, 18:07. Показов 3592. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Возник такой вот вопрос, как создать Tasks как им пользоваться и как запускать параллельно с несколькими Tasks так что бы не подвисал проект. Обрыл весь инет, там только примеры и примеры, я пробовал начинаю например ставить цикл и запустить так программа зависает.

Помогите, скиньте пример программы с работай Tasks или объясните как работать или посоветовать какой нить аналог.

Заранее спасибо за помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2017, 18:07
Ответы с готовыми решениями:

Получить результат выполнения Task без зависания окна
У меня у окна есть метод Initialize(), который должен запускать поток, внутри которого формируется массив и возвращается для заполнения...

Как выполнить цикл в несколько потоков с использованием Task?
Необходимо что бы в цикле for создавались потоки, которые выполняют функции, а все игнорируется... что же делать? private void...

Как запускать несколько программ из одного проекта
Есть проект в VS. Пишу одну программу, она нормально запускается. Я пишу вторую, пытаюсь её запустить, запускается первая. В чём прикол?

4
Эксперт .NET
 Аватар для Usaga
14295 / 9380 / 1353
Регистрация: 21.01.2016
Сообщений: 35,363
13.02.2017, 18:43
Цитата Сообщение от sashf1999 Посмотреть сообщение
Возник такой вот вопрос, как создать Tasks как им пользоваться и как запускать параллельно с несколькими Tasks так что бы не подвисал проект
Это шутка? Официальная документация за документацию уже не считается?
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
13.02.2017, 18:45
Цитата Сообщение от sashf1999 Посмотреть сообщение
я пробовал начинаю например ставить цикл и запустить так программа зависает.
Код в студию, иначе пост выше. MSDN
0
 Аватар для sashf1999
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 61
13.02.2017, 19:50  [ТС]
Вот в чем проблема то

C#
1
2
3
4
5
6
7
8
public void MyTask()
{
for (int count = 0; count < 10000; count++)
{
Thread.Sleep(500);
//тут вывод
}
}
Когда делаю еще 1 такую

C#
1
2
3
4
5
6
7
public void MyTaskss()
{
for (int count = < 10000; count < 20000; count++)
{
//тут вывод
}
}
и на кнопки кидаю так

C#
1
2
Task task1 = new Task(MyTask);
task1.Start();
и еще на одну кидаю вот так

C#
1
2
Task task2 = new Task(MyTaskss);
task2.Start();
И запускаю их две, тогда программа работает и я не могу ее даже двигать пока цикл не закончит.
Вот здесь черпал инфу
Может я что-то не так делаю, или что? подскажи!
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
13.02.2017, 20:34
Цитата Сообщение от sashf1999 Посмотреть сообщение
я не могу ее даже двигать пока цикл не закончит
Стоит почитать об async/await, можно почитать о методах до 4.5 фрейворка, но там сложновато =))


Тот же код:
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
using System;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
    public static void Main(string[] args)
    {
        Task task1 = Task.Run(()=> MyTask());
 
        Task task2 = Task.Factory.StartNew(MyTaskss);
 
        Task.WaitAll(task1, task2);
        Console.ReadLine();
    }
 
    public static void MyTask()
    {
        for (int count = 0; count < 10; count++)
        {
            Thread.Sleep(500);
            Console.WriteLine("=>>> 1 <<<=");
        }
    }
 
    public static void MyTaskss()
    {
        for (int count = 0; count < 10; count++)
        {
            Thread.Sleep(300);
            Console.WriteLine(" =<<<2>>>= ");
        }
    }
}
Добавлено через 3 минуты
ну и:
C#
1
2
3
4
5
6
7
8
    public async static void MyTask()
    {
        for (int count = 0; count < 10; count++)
        {
            await Task.Delay(500);
            Console.WriteLine("=>>> 1 <<<=");
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2017, 20:34
Помогаю со студенческими работами здесь

Как запретить запускать несколько экземпляров одной проги?
Напомните, пожалуйста, как запретить запускать несколько экземпляров одной проги. (Например, как Word) Благодарю.

Как запускать js без браузера?
как запускать js без браузера? в чистом джава скрипте

Как отключить Task Manager без всплывания уведомлений?
Мне нужно чтобы не открывался Task Manager, но при этом не выдавалось уведомление &quot;диспетчер задач заблокирован...&quot;. То есть это...

Как запускать linux без ввода пароля?
Здравствуйте. помогите плз, у меня стоит сервер, на нем стоит linux ubuntu server и на всякий случай я зашифровал домашний каталог, и при...

Как запускать компьютер без кнопки старт?
Здравствуйте. У меня на компьютре кнопка рестарта стала заедать, и я ее отключил. Далее у меня сломалась кнопка включения компьютера, ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru