3 / 3 / 2
Регистрация: 17.05.2009
Сообщений: 69

Как получить данные из другого потока?

04.03.2014, 23:51. Показов 16879. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Приложение выполняется в 2 потока.
В процессе выполнения необходимо получать данные
из другого потока для вывод их в Label.
Подскажите как реализовать?
Пишу в Visual Studio C#
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//класс для отдельного потока
class AreaClass
{
 
    public void CalcArea()
    {
       //функция выполняющаяся в отдельном потоке 
       //которая будет записывать значения в "переменную 1"
    }
}
 
//основной класс в котором по срабатыванию таймера должны браться значения из "переменная 1" и выводиться в Label
class ....... {
 AreaClass AreaObject = new AreaClass();
 
    System.Threading.Thread Thread =
        new System.Threading.Thread(AreaObject.CalcArea);
    Thread.Start();
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2014, 23:51
Ответы с готовыми решениями:

Как получить данные из потока?
Сделал класс в котором опрашиваются все локальные БД. Хочу чтобы данные передавались в UI формы где вызывается поток. Как это сделать? ...

Как изменить данные UI формы из другого потока
Есть MainWindow: using System.Threading; ... namespace WpfApplication1 { public partial class MainWindow : Window {...

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

4
15 / 15 / 8
Регистрация: 14.01.2013
Сообщений: 545
Записей в блоге: 2
05.03.2014, 00:57
Можно создать статический класс.

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
class AreaClass
{
 
    public void CalcArea()
    {
       //функция выполняющаяся в отдельном потоке 
       //которая будет записывать значения в "переменную 1"
        qqq.Text = "jbhbuyhb"; // Записываем 
    }
}
 
//основной класс в котором по срабатыванию таймера должны браться значения из "переменная 1" и выводиться в Label
class ....... {
 AreaClass AreaObject = new AreaClass();
 
    System.Threading.Thread Thread =
        new System.Threading.Thread(AreaObject.CalcArea);
    Thread.Start();
 
 label.text = qqq.Text; // Заносим в label
 
}
 
static class qqq
{
  static public String Text { get; set; } // Значение 
}
1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
05.03.2014, 09:12
Никогде не делайте так, как предлагает updaite - это очень плохое решение.
Есть множество других вариантов. Например, можно в конструктор AreaClass передать ссылку на ваш Label.
C#
1
2
3
4
5
6
class AreaClass {
   Label label;
   public AreaClass(Label label) {
      this.label = label;
   }
}
C#
1
2
3
4
5
        public void CalcArea()
        {
            string s = "123";
            label.Invoke(new Action(() => label.Text = s));
        }
2
 Аватар для Sayanchik777
9 / 9 / 6
Регистрация: 09.05.2015
Сообщений: 529
29.12.2017, 15:03
Цитата Сообщение от turbanoff Посмотреть сообщение
C#
1
label.Invoke(new Action(() => label.Text = s));
что это за запись? как записать это удобочитаемо дл новичка?
0
 Аватар для kesean
292 / 291 / 108
Регистрация: 04.09.2010
Сообщений: 638
29.12.2017, 16:44
Sayanchik777, это можно записать так:
C#
1
2
3
4
5
6
7
8
9
10
        private delegate void SetTextDelegate(string msg);
        public void CalcArea()
        {
            SetTextDelegate del = SetText;
            label.BeginInvoke(del, "123");
        }
        private void SetText(string msg)
        {
            label.Text = msg;
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.12.2017, 16:44
Помогаю со студенческими работами здесь

Как вывести данные в textbox из другого потока?
Добрый день, как вывести данные, допустим, в textbox из другого потока? TextBox t =...

Как получить доступ к richtextbox.text на форме из другого потока?
Есть поток, который выполняет процедуру listening. Там выполняется код, который должен выводить результат в richtextbox, но проблема в том,...

Как получить доступ к элементу ListBox из другого потока
Прошу помощи. public partial class MainWindow : Window { //==================================================== ...

Как получить результат переменной из другого потока
Потоки создаются при подключении нового пользователя. В потоке выполняются различные функции, а также записываются логин и айпи откуда он...

Как прочитать данные из потока вывода другого процесса
Как получить то, что выводит командная строка (прочитать выводной поток другого процесса)


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

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

Новые блоги и статьи
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru