Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
awp-sirius
57 / 57 / 41
Регистрация: 01.05.2012
Сообщений: 494
#1

Оценить код многопоточности - C#/.NET 4.x

27.08.2014, 00:14. Просмотров 288. Ответов 3
Метки нет (Все метки)

Имеется вот что-то тип такого дела:
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Threading;
using xNet.Net;
using xNet.Text;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Thread thr = new Thread(GetProxy);
            thr.Start();
        }
 
        void GetProxy()
        {
            int number = 0;
            string SourcePage = "";
            var proxy = new List<string>();
            try
            {
                int r = SourcePage.Substrings("<td class=\"proxy-ipport\">", "</td>").Length;
                ...
                Выполняется код, нахожу number начальное число, r - конечное
                ...
 
                for (int i = number; i < r; i++)
                {
                    proxy.Add(SourcePage.Substrings("<td class=\"proxy-ipport\">", "</td>")[i]);
                    
                    //Запись proxy в richTextBox
                    Invoke((MethodInvoker)delegate
                    {
                        richTextBox1.Text += proxy[-(number - 1) + i] + Environment.NewLine;
                    });
                }
            }
            catch { MessageBox.Show("Ошибка при парсинге HTTPS proxy"); }
 
            MessageBox.Show("Парсинг заверёшн.\nСкопированно: " + proxy.Capacity + " proxy");
        }
    }
}

Вопрос конкретно на 41-44 строках. Безууумно долго пытался разобраться с многопоточностью.
Так мне это пока что и не далось, все эти делигаты и классы......
Нашёл вот такой вот способ, как это работает понятия не имею.
Объясните пожалуйста как, и можно ли вообще так делать? Потому что для моей задачи (фоновый поток всего 1) это в 1000 раз легче, чем всё, что я видео о многопоточности - это и настораживает.

Заранее спасибо!
http://www.cyberforum.ru/windows-forms/thread1496320.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2014, 00:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Оценить код многопоточности (C#):

вопрос по многопоточности
есть консольное приложение. в главной ф-ции я запускаю кучу потоков через...

Организация многопоточности
Всем привет! Работаю над приложением WinForms, которое использует API,...

Отличия многопоточности Java и C#
В чем различие в безопасности и стабильности?

Зависает при многопоточности
Доброе время суток.Помогите советом, несколько дней бьюсь, все перепробовал....

Низкая производительность многопоточности
Добрый день. Подскажите в чем причина падения производительности и можно ли...

3
ORLENOK
86 / 86 / 35
Регистрация: 05.08.2011
Сообщений: 390
Завершенные тесты: 5
27.08.2014, 00:37 #2
awp-sirius, Из того, что я понял о многопоточности: Если какой либо элемент создан не в данном потоке, то прямого доступа к нему нет, собственно по понятным причинам. Если создадим текстбокс и из разных потоков будем менять его свойства, то выйдет не очень красиво, пока один пишет "привет мир" второй вписывает " цой жив", а в итоге получается "прицойвет ж ми вр". Не красиво вообщем получается. Для обращения к контролам созданным в другом потоке используется Invoke. На этом мои представления о происходящем иссякли, код работает, я доволен))
0
awp-sirius
57 / 57 / 41
Регистрация: 01.05.2012
Сообщений: 494
27.08.2014, 01:57  [ТС] #3
Аналогично, но хотелось бы всё же разобраться...
Скорее у меня проблема больше в делигатах и т.п.
0
Vitalyk
Заблокирован
27.08.2014, 10:55 #4
ORLENOK,
Если какой либо элемент создан не в данном потоке, то прямого доступа к нему нет, собственно по понятным причинам.
По каким это понятным? Через WinAPI почему-то есть, если hWnd знать. Или на C# и через WinAPI не выйдет? На голом С++ был вроде...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2014, 10:55
Привет! Вот еще темы с решениями:

Сравнение многопоточности и линейного алгоритма
Пишу диплом на тему многопоточность в с#. Чтобы добавить &quot;воды&quot; решил сравнить...

Зависает форма при многопоточности
Здравствуйте! У меня такая проблема! У меня в форме есть секундомер, который...

async/await как замена многопоточности
Можно ли использовать эту конструкцию как полную замену потокам, или в каких...

Скорость сортировки не увеличивается с применением многопоточности
всем доброго времени суток! реализую многопоточность. на форме выбирается...


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

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

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