0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 14
|
||||||
1 | ||||||
Передача элементов массива в потоки06.04.2016, 19:12. Показов 2122. Ответов 6
Здравствуйте! Мне необходимо реализовать контроль главным потоком работы производных потоков, выполняющих одну задачу. Я решила создать массив статусов и вызывать эту задачу для каждого потока, передавая элемент массива по ссылке, куда поток-исполнитель будет записывать некоторый признак, этот признак потом и будет обрабатывать главный поток. Но столкнулась с проблемой, компилятор выдает ошибку в ходе выполнения кода о том, что индекс находится вне границ. Хотя для первого создаваемого и вызываемого потока задача срабатывает. Я новичок в многопоточности .NET. Не могли бы вы объяснить почему возникает такая ошибка и есть ли метод лучше для решения моей задачи. Спасибо.
Вот код:
0
|
06.04.2016, 19:12 | |
Ответы с готовыми решениями:
6
Фоновые потоки - Найти произведение элементов числового массива Передача параметра в потоки Потоки - передача параметров Передача в метод элементов массива |
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
||||||
06.04.2016, 19:21 | 2 | |||||
Потому что у вас происходит захват переменной i, которая на момент выполнения анонимных методов имеет значение n.
1
|
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 14
|
|
06.04.2016, 19:58 [ТС] | 3 |
Боже, какая глупость! Спасибо большое Вам!
Скажите, а вообще можно ли назвать мой метод проверки статуса адекватным?)) или лучше придумать что-то другое?
0
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
06.04.2016, 22:53 | 4 |
Оно же сильно от ситуации зависит: что за метод, как проверяет, как быстро и пр.
Вот что бы я изменил, так это в метод op передавал бы лучше массив и индекс, без всяких ref.
1
|
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 14
|
|
06.04.2016, 23:38 [ТС] | 5 |
kolorotur, ну вот мне просто нужно анализировать в основном потоке некоторый признак, его значение заносит в элемент массива поток-исполнитель, если этот признак удовлетворяет некоторому условию, то основной поток убивает этот поток-исполнитель, создает новый вместо него и отправляет его делать ту же задачу.
Получается, у меня поток-мастер должен постоянно анализировать значение статусов, приходящих от разных исполнителей. Пока только есть идея крутиться в цикле и анализировать значения элементов массива...
0
|
17686 / 12872 / 3365
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
07.04.2016, 00:34 | 6 |
А почему бы не переложить эту задачу на сам поток-исполнитель?
Пусть сам проверяет этот признак и решает, продолжать работать дальше или закругляться.
0
|
0 / 0 / 0
Регистрация: 08.12.2014
Сообщений: 14
|
|
07.04.2016, 10:44 [ТС] | 7 |
kolorotur,
Да, это, конечно, было бы логичнее. Просто в постановке задаче это действие должен выполнять поток-мастер, вот и приходится извращаться(
0
|
07.04.2016, 10:44 | |
07.04.2016, 10:44 | |
Помогаю со студенческими работами здесь
7
Потоки. Передача функции аргумента Потоки, передача файлов по сети Передача аргументов в потоки Windows Передача двух аргументов (потоки ) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |