Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 16
1
.NET 4.x

Как запустить несколько потоков одновременно?

29.04.2012, 01:21. Показов 5882. Ответов 3
Метки нет (Все метки)

Здравствуйте, не могу решить проблему с объявлением количества потоков, нужно чтобы запускалось сразу (например) 20 потоков.
Вот код Buttun1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 ThreadPool.SetMaxThreads(20, 20);
            string base = File.ReadAllText("source.txt");
            string[] matches = base.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            List<Struct> arr = new List<Struct>();
            for (int j = 0; j < matches.Length; j++)
            {
                arr.Add(new Struct(matches[j].ToString().Replace("\\", "")));
            }
            List<Thread> listthread = new List<Thread>();
            foreach (Struct a in arr)
            {
                    ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerProcedure), a);
            }
            arr.Clear();
Код процедуры обработки:
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
 Struct a = (Struct)structure;
            if (-------------------)
            {
                Action myact = new Action(() =>
                {
-----------------------
                 }
                    else
                    {
-------------------------
                    }
                });
                this.Invoke(myact);
            }
            else
            {
                Action myact = new Action(() =>
                {
--------------------------
                });
                this.Invoke(myact);
            }
            Console.WriteLine(a.ToString()); 
        }
Помогите кто чем может, пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2012, 01:21
Ответы с готовыми решениями:

как запустить одновременно и отслеживать несколько процессов?
вот такой например процесс //создаем новый процесс, который будет работать с консолью ...

Запуск несколько фоновых потоков одновременно
Необходимо заполнять массив из n элементов. Как организовать заполнение массива одновременно в...

Ресурсоемкость потоков, есть ли способы выполнять несколько операций одновременно, не загружая CPU?
Как решить проблему ресурсоемкости потоков(Thread)? Есть ли способы выполнять более 2х операций...

Создать и запустить одновременно несколько потоков
Всем привет) Необходимо создать несколько потоков и запустить их одновременно (без помощи циклов)....

3
Эксперт .NET
14879 / 11265 / 2952
Регистрация: 17.09.2011
Сообщений: 18,866
29.04.2012, 14:33 2
Цитата Сообщение от APIWizard Посмотреть сообщение
ThreadPool.SetMaxThreads(20, 20);
ThreadPool не гарантирует, что все потоки, запланированные через QueueUserWorkItem будут в сию же секунду запущены.
Если вам нужно самому контролировать количество потоков, то используйте просто Thread:

C#
1
2
3
4
5
6
7
8
9
10
11
            string base = File.ReadAllText("source.txt");
            string[] matches = base.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            List<Thread> listthread = new List<Thread>();
 
            for (int j = 0; j < matches.Length; j++)
            {
                Thread thread = new Thread(WorkerProcedure);
                thread.Start(new Struct(matches[j].ToString().Replace("\\", "")));
                thread.Start();
                listthread.Add(thread);
            }
2
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 16
29.04.2012, 15:13  [ТС] 3
Извините, но у меня ошибка «Поток выполняется или прерван; его нельзя запустить повторно.», и еще данные потоки будут работать асинхронно? (1 Поток, 4 Поток, 3 Поток, 2 Поток…)
0
Эксперт .NET
14879 / 11265 / 2952
Регистрация: 17.09.2011
Сообщений: 18,866
29.04.2012, 16:26 4
Цитата Сообщение от APIWizard Посмотреть сообщение
у меня ошибка «Поток выполняется или прерван; его нельзя запустить повторно.»
Вы как-то код скопировали криво.
Как он у вас выглядит?

Цитата Сообщение от APIWizard Посмотреть сообщение
анные потоки будут работать асинхронно?
Разумеется. На то они и потоки, чтобы работать асинхронно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2012, 16:26

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как запустить поочередно несколько потоков?
Изучаю многопоточность. Столкнулся со следующей проблемой. Имеется такой вот гипотетический код: ...

Правильно создать пул потоков, запустить эти потоки одновременно и дождаться их завершения
Добрый день! Подскажите пожалуйста, как правильно создать пул потоков, запустить эти потоки...

Как сделать одновременно много потоков?
Всем привет! Изучаю C# и тут возник такой вопрос как так делают? Буду использовать на...

Как запустить две формы одновременно
Здравтсвуйте, у меня есть две формы, первая запускается автоматически, вторая запускается при...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.