Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Ответ
 
Опции темы
Старый 24.01.2012, 17:53   #1
 Рыцарь-лейтенант
Аватар для xFroLx
 
xFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражания
Регистрация: 21.06.2010
Сообщений: 425
Популярность: 1817
Сказал(а) спасибо: 247
Поблагодарили 566 раз(а) в 147 сообщениях
Отправить сообщение для xFroLx с помощью ICQ
 
Smile Многопоточность C#

В свое время долго искал нормальный гайд по многопоточности, так и не нашел) Добивался своими силами Решил сделать свой теперь)

1. Создаем новый проект, кидаем на форму кнопку, numericUpDown, richTextBox

[Ссылки могут видеть только зарегистрированные пользователи. ]

Код:
 public Form1()
        {
            InitializeComponent();
        }
        int main;
        string[] mas;
2. Тыкаем по кнопке, копируем туда вот это

Код:
   
           mas = richTextBox1.Text.Split('\n');
            main = 0;
            int s = Convert.ToInt32(numericUpDown1.Text);
            Thread[] thread = new Thread[s];
            for (int i = 0; i < s; i++)
            {
                Thread thr = new Thread(new ThreadStart(s_w));
                thread[i] = thr;
                Thread.Sleep(55);
                thread[i].Start();
            }
3. Ниже вставляем вот это

Код:
 public string send_POST(string url, string post)
        {
            string Response_POST = "", StrNewValue;
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "POST";
                req.Proxy = new WebProxy("127.0.0.1", 8888);///ЧАРЛЕЗ
                req.ContentType = "application/x-www-form-urlencoded";
                StrNewValue = post;
                req.ContentLength = StrNewValue.Length;
                StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                Soup.Write(StrNewValue);
                Soup.Close();
                StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream());
                Response_POST = stin3.ReadToEnd();
                stin3.Close();
            }
            catch { }
            return Response_POST;
        }

        private void s_w()
        {
            while (true)
            {
                try
                {
                    main++;
                    send_POST("http://www.yandex.ru/"+mas[main - 1], ""); ///Меняем на свое
                }
                catch { break; }
            }
        }
4. Целиом должно получится вот так

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Web;
using System.Threading;

namespace Threads
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int main;
        string[] mas;
        private void button1_Click(object sender, EventArgs e)
        {
            mas = richTextBox1.Text.Split('\n');
            main = 0;
            int s = Convert.ToInt32(numericUpDown1.Text);
            Thread[] thread = new Thread[s];
            for (int i = 0; i < s; i++)
            {
                Thread thr = new Thread(new ThreadStart(s_w));
                thread[i] = thr;
                Thread.Sleep(55);
                thread[i].Start();
            }
        }

        public string send_POST(string url, string post)
        {
            string Response_POST = "", StrNewValue;
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "POST";
                req.Proxy = new WebProxy("127.0.0.1", 8888);
                req.ContentType = "application/x-www-form-urlencoded";
                StrNewValue = post;
                req.ContentLength = StrNewValue.Length;
                StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                Soup.Write(StrNewValue);
                Soup.Close();
                StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream());
                Response_POST = stin3.ReadToEnd();
                stin3.Close();
            }
            catch { }
            return Response_POST;
        }

        private void s_w()
        {
            while (true)
            {
                try
                {
                    main++;
                    send_POST("http://www.yandex.ru/"+mas[main - 1], "");
                }
                catch { break; }
            }
        }
    }
}
5. Теперь запускаем отладку, в ричТекстБокс вводим любые числа с новых строк и жмем на кнопку (ЧАРЛЕЗ ДОЛЖЕН БЫТЬ ВКЛЮЧЕН)

[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось xFroLx; 25.01.2012 в 17:09.
  Ответить с цитированием
6 пользователя(ей) сказали cпасибо:
CreatiK (27.01.2012), Gamer1912 (24.01.2012), object (25.01.2012), OrBiT_DaRk (14.02.2013), Shook† (29.01.2012), The Unique (17.02.2012)
Старый 24.01.2012, 23:53   #2
Заблокирован
 Старший сержант
Аватар для Gamer1912
 
Gamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небе
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Отправить сообщение для Gamer1912 с помощью Skype™
 
По умолчанию Re: Многопоточность C#

xFroLx, Очень благодарен. Почти каждый день искал что то подобное.
Попробовал, все в принципе хорошо, но нашел пару недочетов.
Если break не ставить, то он по моему метод выполняется дальше, система грузится очень сильно, хотя запросы уже все прошли и по идее программа должна бездействовать.

Код:
private void s_w()
        {
            while (true)
            {
                try
                {
                    main++;
                    send_POST("http://www.yandex.ru/"+mas[main - 1], ""); ///Меняем на свое
                }
                catch { break; }
            }
        }
И вот еще, если строк в richTextBox меньше чем выбрано потоков, то вылетает ошибка. Я избавился так (может есть способ проще, хотя меня и этот устраивает)
Код:
            mas = richTextBox1.Text.Split('\n');
            main = 0;
            int s = Convert.ToInt32(numericUpDown1.Text);
            Thread[] thread = new Thread[s];
            if (richTextBox1.Lines.Length <= s) { s = r1.Lines.Length; }
            for (int i = 0; i < s; i++)
            {
                Thread thr = new Thread(new ThreadStart(s_w));
                thread[i] = thr;
                Thread.Sleep(55);
                thread[i].Start();
            }
  Ответить с цитированием
Пользователь сказал cпасибо:
xFroLx (25.01.2012)
Старый 25.01.2012, 17:10   #3
 Рыцарь-лейтенант
Аватар для xFroLx
 
xFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражанияxFroLx блестящий пример для подражания
Регистрация: 21.06.2010
Сообщений: 425
Популярность: 1817
Сказал(а) спасибо: 247
Поблагодарили 566 раз(а) в 147 сообщениях
Отправить сообщение для xFroLx с помощью ICQ
 
По умолчанию Re: Многопоточность C#

спс) забыл про брик, а это
if (richTextBox1.Lines.Length <= s) { s = r1.Lines.Length; }
не особо нужно)
  Ответить с цитированием
Старый 25.01.2012, 21:08   #4
Заблокирован
 Старший сержант
Аватар для Gamer1912
 
Gamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небе
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Отправить сообщение для Gamer1912 с помощью Skype™
 
По умолчанию Re: Многопоточность C#

xFroLx, Я вообще while убрал. Подскажи, если знаешь, как быть с MessageBox в конце, сделал примерно так
Код:
private void s_w()
        {
            try
            {
                main++;
                send_POST("http://...", mas[main - 1]);
                if (progressBar1.Value == r1.Lines.Length) { MessageBox.Show("Готово"); }
            }
            catch { }
        }
  Ответить с цитированием
Старый 25.01.2012, 21:44   #5
 Разведчик
Аватар для Hermeska
 
Hermeska на правильном пути
Регистрация: 13.01.2012
Сообщений: 4
Популярность: 70
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Многопоточность C#

Минус здесь в том, что больше 5 потоков ставишь и все к чертям летит - 1 и то же значение может пройти 3 раза например, а некоторые ни разу, если разбанят напишу норм гайд под .NET Framework 2.0 с любым числом потоков, минус будет 1 - что будет идти не по порядку(берет значения рандомно), но ни 1 не будет пропущено
  Ответить с цитированием
Старый 26.01.2012, 07:51   #6
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Многопоточность C#

Код:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;

namespace ParallelForEach
{
    public partial class Form1 : Form
    {
        readonly ParallelOptions o = new ParallelOptions();
        private Thread t;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            t = new Thread(s_w);
            t.Start();
        }

        string send_POST(string url, string post)
        {
            string Response_POST = "", StrNewValue;
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "POST";
                req.Proxy = new WebProxy("127.0.0.1", 8888);
                req.ContentType = "application/x-www-form-urlencoded";
                StrNewValue = post;
                req.ContentLength = StrNewValue.Length;
                StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                Soup.Write(StrNewValue);
                Soup.Close();
                StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream());
                Response_POST = stin3.ReadToEnd();
                stin3.Close();
            }
            catch { }
            return Response_POST;
        }

        private void s_w()
        {
            o.MaxDegreeOfParallelism =  Convert.ToInt32(numericUpDown1.Value);
            Parallel.ForEach(GetLine(), o,
                line => send_POST("http://www.yandex.ru/" + line, ""));
        }

        IEnumerable<string> GetLine()
        {
            string[] line = null;
            if (richTextBox1.InvokeRequired)
            {
                richTextBox1.Invoke(
                    new Action(() =>                                
                    {                                
                        line = richTextBox1.Text.Split('\n');                                 
                    }                                
                    ));
            }
            else
        line = richTextBox1.Text.Split('\n');
            return line;
        }
    }
}
Вот так должно работать, во сколько угодно потоков и без повторов

Добавлено через 2 минуты
Можно усовершенствовать вот так:
Код:
IEnumerable<string> GetLine(Control ControlName)
        {
            string[] line = null;
            if (richTextBox1.InvokeRequired)
            {
                richTextBox1.Invoke(
                    new Action(() =>                                
                    {
                        line = ControlName.Text.Split('\n');                                 
                    }                                
                    ));
            }
            else
                line = ControlName.Text.Split('\n');
            return line;
        }
И вызыывать:
Код:
GetLine(richTextBox1);
________________
Talk is cheap. Show me the code
— Linus Torvalds

Последний раз редактировалось Yukikaze; 26.01.2012 в 07:55. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 26.01.2012, 19:12   #7
Заблокирован
 Старший сержант
Аватар для Gamer1912
 
Gamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небеGamer1912 лучик света в грозовом небе
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Отправить сообщение для Gamer1912 с помощью Skype™
 
По умолчанию Re: Многопоточность C#

Yukikaze, Поставил 100 потоков и закинул в рич 200 строк, прошло 20 запросов в 2 потока, вылетела ошибка и в итоге прога выключилась.
  Ответить с цитированием
Старый 26.01.2012, 19:23   #8
 Пехотинец
Аватар для Puzer
 
Puzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личностьPuzer определенно авторитетная личность
Регистрация: 02.09.2009
Сообщений: 55
Популярность: 1249
Сказал(а) спасибо: 7
Поблагодарили 191 раз(а) в 37 сообщениях
 
По умолчанию Re: Многопоточность C#

Можно попроще сделать. Я хорошо прокомментировал
(консольное приложение .net 4, по сути просто считает в потоках)

PHP код:
using System;
using System.Collections.Generic;
using System.Threading;

namespace 
ConsoleApplication1
{
    
internal class Program
    
{
        static public List<
ThreadThreads = new List<Thread>();//Главный массив потоков
        
static public int Counter;//Ненужный глобальный счётчик
        
private static void Main(string[] args)
        {
            const 
int maxThreads 100;//Количество потоков
            
int i 0;//просто ненужный счётчик
            
while (true)//бесконечный цикл
            
{
                
//Thread.CurrentThread.Join(100);

                
if (Threads.Count >= maxThreads) continue; //Если потоков больше чем нужно то пропускаем цикл, если нет ,то идём дальше
                
if (Counter>=1000) break;//При достижении глобального счётчика 1к вырубаем цикл (ну и программу)

                
i++;
                var 
th = new Thread(ThreadWorker){Name="login",IsBackground=true};//инициализируем новый поток с имем login и делаем его фоновым
                
th.Start(new object[] {"login""domaine""password",i});//Cтартуем новый поток и передаём ему 4 параметра
                
Threads.Add(th);//Добавляем поток в глобальный массив потоков

                
if(false)//Импровизация возможностей
                
{
                    
Threads.Find(thI=>thI.Name=="test").Abort();//находим поток с именем test и останавливаем его
                
}

            }

            
Console.ReadKey();
        }

        public static 
void ThreadWorker(object obj)
        {
            var 
objTemp = (object[])obj;

            var 
login = (string)objTemp[0];
            var 
domaine = (string)objTemp[1];
            var 
password = (string)objTemp[2];

            
/*
             * TODO:Можем делать что хотим
             * то ниже например выводит в консоль переданный параметр
             */


            
var counter = (int)objTemp[3];//Получаем счётчик который пришёл с параметром
            
            
Console.WriteLine(counter);
            
Counter++;//+1 к глобальному счётчику
            
Thread.CurrentThread.Join(5000);//Пауза потока на 5 секунд


            
Threads.Remove(Thread.CurrentThread);//Как всё сделаем удаляем текущий поток из массива потоков
            
        
}


    }

Сорцы можете скачать: [Ссылки могут видеть только зарегистрированные пользователи. ]
________________

Последний раз редактировалось Puzer; 26.01.2012 в 19:38.
  Ответить с цитированием
Старый 26.01.2012, 21:05   #9
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Многопоточность C#

Цитата:
Сообщение от PuzerПосмотреть сообщение
Можно попроще сделать. Я хорошо прокомментировал
(консольное приложение .net 4, по сути просто считает в потоках)

PHP код:
using System;
using System.Collections.Generic;
using System.Threading;

namespace 
ConsoleApplication1
{
    
internal class Program
    
{
        static public List<
ThreadThreads = new List<Thread>();//Главный массив потоков
        
static public int Counter;//Ненужный глобальный счётчик
        
private static void Main(string[] args)
        {
            const 
int maxThreads 100;//Количество потоков
            
int i 0;//просто ненужный счётчик
            
while (true)//бесконечный цикл
            
{
                
//Thread.CurrentThread.Join(100);

                
if (Threads.Count >= maxThreads) continue; //Если потоков больше чем нужно то пропускаем цикл, если нет ,то идём дальше
                
if (Counter>=1000) break;//При достижении глобального счётчика 1к вырубаем цикл (ну и программу)

                
i++;
                var 
th = new Thread(ThreadWorker){Name="login",IsBackground=true};//инициализируем новый поток с имем login и делаем его фоновым
                
th.Start(new object[] {"login""domaine""password",i});//Cтартуем новый поток и передаём ему 4 параметра
                
Threads.Add(th);//Добавляем поток в глобальный массив потоков

                
if(false)//Импровизация возможностей
                
{
                    
Threads.Find(thI=>thI.Name=="test").Abort();//находим поток с именем test и останавливаем его
                
}

            }

            
Console.ReadKey();
        }

        public static 
void ThreadWorker(object obj)
        {
            var 
objTemp = (object[])obj;

            var 
login = (string)objTemp[0];
            var 
domaine = (string)objTemp[1];
            var 
password = (string)objTemp[2];

            
/*
             * TODO:Можем делать что хотим
             * то ниже например выводит в консоль переданный параметр
             */


            
var counter = (int)objTemp[3];//Получаем счётчик который пришёл с параметром
            
            
Console.WriteLine(counter);
            
Counter++;//+1 к глобальному счётчику
            
Thread.CurrentThread.Join(5000);//Пауза потока на 5 секунд


            
Threads.Remove(Thread.CurrentThread);//Как всё сделаем удаляем текущий поток из массива потоков
            
        
}


    }

Сорцы можете скачать: [Ссылки могут видеть только зарегистрированные пользователи. ]

Если сам сделал то ты крут )
Только пихай код в обычный тег [CODE]. А то буйство красок PHP кода убивает глаза и мозг....
  Ответить с цитированием
Старый 26.01.2012, 22:04   #10
 Разведчик
Аватар для Hermeska
 
Hermeska на правильном пути
Регистрация: 13.01.2012
Сообщений: 4
Популярность: 70
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Многопоточность C#

Yukikaze, это под Net 4, а я писал про 2 =)) но этот способ на самом деле самый хороший из всех возможных =))
  Ответить с цитированием
Старый 27.01.2012, 14:56   #11
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Многопоточность C#

Код:
using System;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Threading;

namespace ParallelForEach
{
    public partial class Form1 : Form
    {
        private string[] s;
        private Thread[] threads;
        StreamWriter sw;
        StreamReader sr;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            sw = new StreamWriter("val.txt");
            foreach (var line in richTextBox1.Lines)
            {
                sw.WriteLine(line);
            }
            sw.Close();
            sr = new StreamReader("val.txt");
            threads = new Thread[Convert.ToInt32(numericUpDown1.Value)];
            for (int i = 0; i < Convert.ToInt32(numericUpDown1.Value); i++)
            {
                threads[i] = new Thread(s_w);
                threads[i].Start();
            }
        }

        string send_POST(string url, string post)
        {
            string Response_POST = "", StrNewValue;
            try
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "POST";
                //req.Proxy = new WebProxy("127.0.0.1", 8888);
                req.ContentType = "application/x-www-form-urlencoded";
                StrNewValue = post;
                req.ContentLength = StrNewValue.Length;
                StreamWriter Soup = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                Soup.Write(StrNewValue);
                Soup.Close();
                StreamReader stin3 = new StreamReader(req.GetResponse().GetResponseStream());
                Response_POST = stin3.ReadToEnd();
                stin3.Close();
            }
            catch { /* Exception */}
            return Response_POST;
        }

        private void s_w()
        {
            while(!sr.EndOfStream)
            {
                asd();
            }
        }

        void asd()
        {
            string line;
            lock (this)
            {
                line = sr.ReadLine();
            }
            send_POST("http://www.yandex.ru/" + line, "");
        }
    }
}
Здесь я чето намудрил странное, но у меня работает
ЗЫ Кто знает как обойтись без чтения строки через StreamReader?
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 27.01.2012, 18:17   #12
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Многопоточность C#

Yukikaze,
Цитата:
без StreamReader

очевидно прочитать поток, а дальше Encoding.%YourEncoding%.GetString(%yourbuffer%), зачем вот только
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 27.01.2012, 18:35   #13
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Многопоточность C#

•theSaboteur•, ты меня маленько не понял.
Там конструкция, читает все строки из ричтекстбокса и записывает их в текстовый фаил, а потом каждый поток начинает читать из файла по 1 строке. О_о ВотЪ.
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 27.01.2012, 19:26   #14
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: Многопоточность C#

Yukikaze, извиняюсь)
В очередной раз поленился прочитать пост полностью..
Кстати и тут поизвращаться можно)))
Скажем подгрузить весь файл в память, разбить на строки и вогнать в стек/очередь)
Ну и прочее садо/мазо
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 28.01.2012, 23:11   #15
Почетный Пользователь
 Рыцарь
Аватар для the-boxi
 
the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(the-boxi сломал счётчик популярности :(
Регистрация: 09.02.2011
Сообщений: 373
Популярность: 38009
Сказал(а) спасибо: 612
Поблагодарили 448 раз(а) в 175 сообщениях
Отправить сообщение для the-boxi с помощью ICQ Отправить сообщение для the-boxi с помощью MSN Отправить сообщение для the-boxi с помощью Skype™
 
По умолчанию Re: Многопоточность C#

Ну как бы это ужасный многопоток. Но для одного действия подойдет. А если действий много? То данные будут теряться.
И лутче переменую счёта обьявить в потоке тоесть в процедуре
Код:
 int index_thread = main;
main++;
________________
Разработка программ на заказ, все вопросы skype - the-boxi, ICQ - 616027961

Последний раз редактировалось the-boxi; 28.01.2012 в 23:19.
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Многопоточность =PaLeTiZaToR= Вопросы и ответы, обсуждения 2 08.01.2012 20:23
[delphi] Многопоточность TakeThat Pascal/Delphi 2 31.07.2010 08:42

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 16:42.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net