@Sushkov
">alert("yohoho")

Правильно ли реализую потоки?

Начал изучать потоки, скажите правильно я делаю
Вот так я создаю потоки:
if (thread.Value > count)// если(заданное кол-во > количества записей)
            {
                for (int i = 0; i < count; i++)
                {
                    thread.Value = count;
                    ThreadStart thr = new ThreadStart(Start);
                    new Thread(thr).Start();
                }

            }
            else
            {
                for (int i = 0; i < thread.Value; i++)
                {
                    ThreadStart thr = new ThreadStart(Start);
                    new Thread(thr).Start();
                }
            }

метод Start(), который вызывается в потоке:
private void Start()
        {
            
            while (true)
            {
                int current; string temp = null;

                lock (block)
                {
                    if (now < count)
                    {
                        current = now;

                        for (int i = 0; i <= current; i++)//получение из файла нужной строки
                        {
                            //openfile.BaseStream.Seek(offset, SeekOrigin.Begin);
                            temp = emailfile.ReadLine();
                            // offset += temp.Length+1;
                            // openfile.Dispose();
                        }
                        now++;
                    }
                    else return;
                }
               ...
             }

Правильно ли сделал что поместил в бесконечный цикл?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 2
petermzg
@petermzg
Самый лучший программист
1. Не нужно создавать new ThreadStart(Start); можно сразу передать метод
new Thread(Start);
// где 
private void Start()
{
  //...
}

2. Вы создаете потоки не сохраняя обьекты на них. Может для вашей задачи это и нормально. Но в реальных проектах нужно отслеживать состояние потоков. Дожидаться их завершения thread.Join(); в основном потоке.
Ответ написан
https://www.youtube.com/user/CBSystematicsTV/searc...
2 часовое видео посмотрите, еще на канале есть одно про TPL (или в нем же).

Академия Microsoft: Параллельные вычисления и мног...
Бесплатно, круто.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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