Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/187: Рейтинг темы: голосов - 187, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 12.11.2013
Сообщений: 12

Попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан

24.11.2013, 03:09. Показов 36671. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Threading;
 
namespace server
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public void server(int port)
        {
            label2.Text += port.ToString();
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(0, port);
            // Создаем сокет Tcp/Ip
            Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
            // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);
 
                // Начинаем слушать соединения
                while (true)
                {
                    richTextBox1.Text += "ss";
                    richTextBox1.AppendText("Ожидаем соединение через порт "+ipEndPoint);
                    // Программа приостанавливается, ожидая входящее соединение
                    Socket handler = sListener.Accept();
                    string data = null;
 
                    // Мы дождались клиента, пытающегося с нами соединиться
 
                    byte[] bytes = new byte[1024];
                    int bytesRec = handler.Receive(bytes);
 
                    data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
 
                    // Показываем данные на консоли
                    Console.Write("Полученный текст: " + data + "\n\n");
 
                    // Отправляем ответ клиенту\
                    string reply = "Спасибо за запрос в " + data.Length.ToString()
                            + " символов";
                    byte[] msg = Encoding.UTF8.GetBytes(reply);
                    handler.Send(msg);
 
                    if (data.IndexOf("<TheEnd>") > -1)
                    {
                        Console.WriteLine("Сервер завершил соединение с клиентом.");
                        
                        break;
                    }
 
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            int port = 7777;
            Thread thread1 = new Thread(delegate() { server(port); });
            thread1.Start();
        }
    }
}

Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан.
Кстати как мне из дочернего потока выводить инфу на richTextBox1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2013, 03:09
Ответы с готовыми решениями:

Попытка доступа к элементу управления не из того потока, в котором он был создан
Здравствуйте, уважаемые знатоки. Помогите, плиз, с задачкой. Иначе я сломаю комп до того, как он сломает мне мозг ))) Почему-то...

Com port попытка доступа к элементу управления не из того потока, в котором он был создан
попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан. Собственно, впытаюсь получить значения с ком...

Попытка доступа к элементу управления Label1 не из того потока в котором он был создан
Здравствуйте, у меня проблема, дело в том что при запуске генераций клеток выдает подобное сообщение &quot;недопустимая операция в...

6
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
24.11.2013, 04:38
C#
1
2
3
4
5
6
7
        private void ToRichTextBox(string text)
        {
            if (InvokeRequired)
                Invoke((Action<string>)ToRichTextBox, text);
            else
                richTextBox1.AppendText(text);
        }
Добавлено через 10 минут
C#
1
2
3
4
5
6
7
        private void ToLabel(string text)
        {
            if (InvokeRequired)
                Invoke((Action<string>)ToLabel, text);
            else
                label2.Text = text;
        }
Если много разных Label будет нужно, то:
C#
1
2
3
4
5
6
7
8
9
10
        private void ToLabel(Label label, string text)
        {
            if (InvokeRequired)
                Invoke((Action<string>)ToLabel, text);
            else
                label.Text = text;
        }
 
            //----------------------
            ToLabel(label2, port.ToString());
3
Заблокирован
09.06.2014, 14:45
а скажите как передать значение не в лист бокс а в глобальную переменную?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
09.06.2014, 14:46
Цитата Сообщение от DoomUnit Посмотреть сообщение
а в глобальную переменную?
что это такое ?
0
6 / 6 / 0
Регистрация: 22.08.2014
Сообщений: 4
12.11.2014, 23:37
Вот самый шикарный и простой метод

C#
1
2
3
4
5
        public static void Log(string _in)
        {
            Form1.richTextBox1.Invoke(new Action(() => Form1.richTextBox1.Text = _in + "\n" + "***********" + "\n" + Form1.richTextBox1.Text));
            
        }
6
1 / 1 / 0
Регистрация: 02.12.2016
Сообщений: 2
02.12.2016, 15:23
Warped, спасибо! Способ и вправду шикарен!

Тоже была проблема, наткнулся на ошибку (Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'checkBox' не из того потока, в котором он был создан.), как и топик стартер, только задача была на время выполнения цикла программы блокировать для изменения checkBox. Ваш способ подошел, в моём случае:

C#
1
checkBox3.Invoke(new Action(() => checkBox3.Enabled = false));
1
0 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 16
Записей в блоге: 3
16.12.2022, 14:52
Сработало с чекбоксами, прогресс барами и текстбоксами. Спасибо

C#
1
checkBox.Invoke(new Action(() => checkBox.Enabled = true));
C#
1
progressBarSHA1.Invoke(new Action(() => progressBarSHA1.Visible = false));
C#
1
textBoxSHA1.Invoke(new Action(() => textBoxSHA1.Text = ChecksumSHA1));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2022, 14:52
Помогаю со студенческими работами здесь

Ошибка в потоках: Попытка доступа к элементу управления не из того потока, в котором он был создан
Нужно сделать счетчик, и при каждом выполнении потока изменять значение label2.Text

Многопоточность. Попытка доступа к элементу управления 'listBox1' не из того потока, в котором он был создан
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Игра "Жизнь". Ошибка "попытка доступа к элементу управления не из того потока, в котором он был создан"
В 96 строке ошибка. Не могу ее исправить. Помогите, пожалуйста! using System; using System.Collections.Generic; using...

BackgroundWorker. Как получить доступ к элементу управления не из того потока, в котором он был создан
Пробую разместить парсер - ссылка в BackgroundWorker. Результат парсинга должен попадать из &quot;ParserWorker.cs&quot;.Worker() по...

Ошибка доступ к элементу ProgressBar не из того потока, в котором он был создан
Здравствуйте друзья. Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru