Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2016, 05:36   #31
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Какая в конечном итоге задача то?
pu4koff вне форума Ответить с цитированием
Старый 01.11.2016, 11:10   #32
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Какая в конечном итоге задача то?
Ну алгоритм такой: имеется 6 тхт их надо склеить и потом отобразить в блоках, ну всмысле первый "поток" или блок как лучше...начинается от и до, второй тоже перебирает от и до, 3-й,4-й,5-й и 6-ой идет тоже от и до, и потом снова первый продолжает дальше от той позиции на которой закончил работу 6-й, ну и показать перебор на экране, чистый перебор, без всяких First Thread, Start'ы итд

Если совсем простый языком то присвоить много интервалов для каждого потока..

Последний раз редактировалось komra2; 01.11.2016 в 11:13.
komra2 вне форума Ответить с цитированием
Старый 03.11.2016, 01:33   #33
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Как склеить эти тхт, пока показывает только содержание последнего в списке тхт
komra2 вне форума Ответить с цитированием
Старый 03.11.2016, 10:58   #34
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если совсем простый языком то присвоить много интервалов для каждого потока..
и эта фраза совсем не вяжется с тем что было написано до нее.

решите задачу линейно с зависанием формы(если форма), потом уже лезьте в потоки.
не бегите вперед паровоза.

и да, ставьте задачи перед собой четко, "что было => что стало", потом уже думайте как сделать.
прочитайте на всякий: http://www.gunsmoker.ru/2008/10/x-y-z.html
Цитата:
Как склеить эти тхт, пока показывает только содержание последнего в списке тхт
я не вижу вашего кода.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2016, 11:17   #35
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я не вижу вашего кода.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace readlines_in_range
{
    class Program
    {
        const int BlockSize = 120; // количество строк в блоке

        static void ThreadFunc(object state) // обработка блока строк в отдельном потоке
        {

            var lines = state as IEnumerable<string>;

            foreach (var line in lines) // перебираем строки
            {
                Console.WriteLine("Thread: {0}\tLine: {1}", Thread.CurrentThread.ManagedThreadId, line);
                Console.WriteLine("End thread\tFirst line:{0}\tEndLine:{1}", lines.First(), lines.Last());
            }
        }
        static void Main(string[] args)
        {
            StreamReader sr1 = new StreamReader(@"C:\Users\LowFrequencySound\Desktop\test.txt");
            string aca = sr1.ReadLine();
            var files = new List<string>();
            files.Add(@"C:\Users\LowFrequencySound\Desktop\1.txt");
            files.Add(@"C:\Users\LowFrequencySound\Desktop\2.txt");
            files.Add(@"C:\Users\LowFrequencySound\Desktop\3.txt");
            files.Add(@"C:\Users\LowFrequencySound\Desktop\4.txt");
            files.Add(@"C:\Users\LowFrequencySound\Desktop\5.txt");
            files.Add(@"C:\Users\LowFrequencySound\Desktop\6.txt");
            foreach (var filename in files)
            {
                using (var reader = new StreamReader(filename))
                {
                    var lines = new List<string>(); // коллекция для сбора блока строк из файла
                    for (; ; )
                    {
                        var str = reader.ReadLine();
                        if (string.IsNullOrEmpty(str)) // файл дочитали до конца
                        {
                            if (lines.Count > 0) // в коллекции остались не отправленные на обработку строки
                            {
                                Console.WriteLine("Start Thread\tFirst line:{0}\tEndLine:{1}", lines[0], lines[lines.Count - 1]);
                                ThreadPool.QueueUserWorkItem(ThreadFunc, lines); // берём поток из пула и выполняем обработку блока строк
                            }
                            break;
                        }
                        lines.Add(str);
                        if (lines.Count == BlockSize) // прочитали нужное число строк из файла, значит можно блок строк отправлять на обработку в другой поток
                        {
                            Console.WriteLine("Start Thread\tFirst line:{0}\tEndLine:{1}", lines[0], lines[lines.Count - 1]);
                            ThreadPool.QueueUserWorkItem(ThreadFunc, lines); // берём поток из пула и выполняем обработку блока строк
                            lines = new List<string>();
                        }
                    }
                }
            }
        }
    }
}

Последний раз редактировалось komra2; 03.11.2016 в 12:05.
komra2 вне форума Ответить с цитированием
Старый 03.11.2016, 11:25   #36
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это код написанный для вас.

прочтите его хоть...
он делает вертикальную склейку.
файл за файлом.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2016, 11:34   #37
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

у меня был еще такой, но комп не хочет его принимать, все время вылетает ошибка
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace readlines_in_range
{
    class Program
    {
        const int BlockSize = 120; // количество строк в блоке

        static void ThreadFunc(object state) // обработка блока строк в отдельном потоке
        {

            var lines = state as IEnumerable<string>;

            foreach (var line in lines) // перебираем строки
            {
                Console.WriteLine("Thread: {0}\tLine: {1}", Thread.CurrentThread.ManagedThreadId, line);
                Console.WriteLine("End thread\tFirst line:{0}\tEndLine:{1}", lines.First(), lines.Last());
            }
        }
        static void Main(string[] args)
        {
            StreamReader sr1 = new StreamReader(@"C:\Users\LowFrequencySound\Desktop\test.txt");
            string aca = sr1.ReadLine();
            foreach (var result in
            from first in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\1.txt")
            from second in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\2.txt")
            from third in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\3.txt")
            from fourth in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\4.txt")
            from fifth in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\5.txt")
            from sixth in File.ReadLines(@"C:\Users\LowFrequencySound\Desktop\6.txt")
            select string.Concat(first, second, third, fourth, fifth, sixth))
            using (var reader = new StreamReader(result))
            {
                var lines = new List<string>(); // коллекция для сбора блока строк из файла
                for (;;)
                {
                    var str = reader.ReadLine();
                    if (string.IsNullOrEmpty(str)) // файл дочитали до конца
                    {
                        if (lines.Count > 0) // в коллекции остались не отправленные на обработку строки
                        {
                            Console.WriteLine("Start Thread\tFirst line:{0}\tEndLine:{1}", lines[0], lines[lines.Count-1]);
                            ThreadPool.QueueUserWorkItem(ThreadFunc, lines); // берём поток из пула и выполняем обработку блока строк
                        }
                        break;
                    }
                    lines.Add(str);
                    if (lines.Count == BlockSize) // прочитали нужное число строк из файла, значит можно блок строк отправлять на обработку в другой поток
                    {
                        Console.WriteLine("Start Thread\tFirst line:{0}\tEndLine:{1}", lines[0], lines[lines.Count - 1]);
                        ThreadPool.QueueUserWorkItem(ThreadFunc, lines); // берём поток из пула и выполняем обработку блока строк
                        lines = new List<string>();
                    }
                }
            }

            Console.ReadKey();
        }
    }
}

Последний раз редактировалось komra2; 03.11.2016 в 11:37.
komra2 вне форума Ответить с цитированием
Старый 03.11.2016, 11:35   #38
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Он склеивает, да, но пишет что не найден файл(
komra2 вне форума Ответить с цитированием
Старый 03.11.2016, 11:53   #39
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

значит путь неверен был, отладка в помощь.
а насчет вашего последнего кода, скажите честно, вы вообще читаете код?
или просто копипастите кусками с легкими правками под себя?

ибо наличие и File.ReadLines и StreamReader говорит о последнем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2016, 12:06   #40
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
значит путь неверен был, отладка в помощь.
а насчет вашего последнего кода, скажите честно, вы вообще читаете код?
или просто копипастите кусками с легкими правками под себя?

ибо наличие и File.ReadLines и StreamReader говорит о последнем.
как это не верен, он склеивает файлы, и должен показывать на экране результат result

конечно читаю, иначе я бы не вставлял код лишний в среду в VS
komra2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточный curl nibufep PHP 2 05.04.2015 19:46
Режимы компиляции Многопоточный MT и Многопоточный DLL vasiatka Общие вопросы C/C++ 5 20.02.2014 19:56
c#. Многопоточный сервер tiger Помощь студентам 1 13.09.2012 13:24
многопоточный сервер мандарин Работа с сетью в Delphi 6 24.04.2007 07:22
Многопоточный Ping Квэнди Работа с сетью в Delphi 0 18.12.2006 15:01