@da_normalny_ya

Почему виснет программа при использовании Parallel.For?

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

вот содержание цикла кому интересно
spoiler

Bitmap tg = new Bitmap(frame_Width, screen_Heigh);
            while (true)
            {
                using (Graphics g = Graphics.FromImage(tg))
                    g.CopyFromScreen(frame_Width * index, 0, 0, 0, new Size(frame_Width, screen_Heigh));
                //действия с пикчей
            }


private void start_Click(object sender, EventArgs e)
        {
            Parallel.For(0, count_CPU-2, Broadcast);
        }
public void Broadcast(int index)
        {
            while (true)
            {
                //code here...
            }
        }
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Потому что Parallel.For ожидает завершения всех запущенных им потоков. А вы не позволяете им завершиться.
И все это ожидание идет в UI потоке, то есть блокируется еще и обработка очереди сообщений.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Возможно, вам не стоит использовать бесконечный цикл, так как он будет располагаться на нескольких ядрах cpu, что скорее всего замедляет работу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы