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

Игнорирование условия цикла for

30.04.2019, 02:16. Показов 1540. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Решил "распараллелить" выполнение операций над массивом содержащим пути.
Вроде все сделано нормально, но программу выбивает с ошибкой из-за того что не срабатывает условие прерывания цикла for, а именно в цикле for есть условие h < T.Length. Когда h становится равной T.Lenght, то дальше блок кода не должен выполнятся, т.к. условие = false, но при работе, программа игнорирует его и продолжает выполнение следующей итерации цикла (в связи с чем происходит ошибка)
Причем в процессе отладки, при пошаговом проходе по данному коду, программа адекватно реагирует на условие цикла и не делает лишнюю итерацию.

В чем может быть ошибка/проблема?

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
                    Task[] T = new Task[2];
 
                    for (int h = 0; h < T.Length; h++)
                    {
                        T[h] = Task.Factory.StartNew(() =>
                        {
                            string[] path_task_array;
                            
                            if (h == 0)
                            {
                                path_task_array = Data.pl.GetRange(0, ImgPathParts[h]).ToArray();
                            }
                            else
                            {
                                path_task_array = Data.pl.GetRange(ImgPathParts[h-1], ImgPathParts[h]).ToArray();
                            }
 
                            int debug_1 = 2;
 
                            foreach (string str_path in path_task_array)
                            {
                                debug_1++;
                            }
 
                        });
                    }
 
                    Task.WaitAll(T);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2019, 02:16
Ответы с готовыми решениями:

Странное поведение проверки условия цикла
Пишу алгоритм сортировки замещением. Дали задание написать алгоритм не только для возрастающего порядка, но и для убывающего. Такое...

Выход из цикла при соблюдении условия
Добрый вечер, скажите пожалуйста будет ли произведен выход из внутреннего цикла при соблюдении в нем условия? и продолжится ли выполнение...

Игнорирование переменной цикла
Добрый день. Работаю в MS Studio 2013. При запуске возникает сообщение об игнорировании переменной в строке 16. Подскажите, пожалуйста, как...

8
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,768
30.04.2019, 09:06
Привели бы текст ошибки.

Вероятно, проблема вовсе не в условии внешнего цикла, а в некорректном использовании переменной 'h', которая при обращении к 'ImgPathParts' может иметь непредсказуемое значение в диапазоне от 0 до 2.

Попробуйте ответить на вопрос, что выведет данный код (он корректен и компилируется), вероятно, тогда суть станет понятна:
C#
1
2
3
4
5
6
7
8
var tasks = new List<Task>();
 
for (var i = 0; i < 4; i++)
{
    tasks.Add(new Task(() => Console.WriteLine(i)));
}
 
tasks.ForEach(t => t.Start());
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
01.05.2019, 02:40
kotelok, выведет сплошь троякИ...
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
01.05.2019, 03:21
Цитата Сообщение от Diamante Посмотреть сообщение
выведет сплошь троякИ...
неужели?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
02.05.2019, 00:19
КОП, ага
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
02.05.2019, 00:27
Цитата Сообщение от Diamante Посмотреть сообщение
ага
проверяли?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
02.05.2019, 00:37
КОП, нет, я на даче, а на ноуте дочери нет студии, но, "вижу тут я замыкание классическое"
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
02.05.2019, 00:40
Цитата Сообщение от Diamante Посмотреть сообщение
вижу тут я замыкание классическое
а i ПОСЛЕ последней итерации чему равно?
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
02.05.2019, 00:48
КОП, согласен,по отдельности увидел, но 2+2 не сложил,шашлыкинг он такой, он коварррный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.05.2019, 00:48
Помогаю со студенческими работами здесь

Игнорирование инициализации переменной цикла
Прошу помощи в определении, судя по всему, глупой ошибки, дело в том, что в цикле for несмотря на инициализацию переменной j (j:=1), все...

Оптимизация условия цикла while
Доброго времени суток, друзья! Я еще совсем новичок в С++. Подскажите плз как оптимизировать следующее условие выхода из цикла while. Уж...

Условия остановки цикла
А как задать условие для: 1) Допустим идет цикл вычислений. Необходимо прервать вычисления при условии, что 3 последних вычислений будут...

Условия цикла в функции
int reverse_number(int number) { int n = 0; while(number) { n = 10*n + number%10; number /= 10; ...

Проверка условия внутри цикла
while (wrong &lt; MAX_WRONG &amp;&amp; otvet != SLOVO) { cout &lt;&lt; &quot;\t&quot;&lt;&lt;HANGMAN_PICS; cout &lt;&lt; &quot;\tосталось &quot; &lt;&lt; MAX_WRONG - wrong &lt;&lt; &quot;...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru