Как в шарпе (языке геев) изменять лейбл из не главного потока? | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Как в шарпе (языке геев) изменять лейбл из не главного потока?

cat228608

Джун
Автор темы
8 Янв 2023
5
0
0
Пишу простую программу для поднятия tcp сервера. И если не выводить сервер в отдельный поток то программа виснет в 0.

Я реализовал систему логов, и хочу выводить данные, дабы юзер не думал о том что все сломалось и не работает.

Код потока:

public static void Server(string Ip, int Port, string input_target)
{
try
{
int server_port = System.Convert.ToInt32(Port);
IPAddress localAddr = IPAddress.Parse(Ip);
TcpListener server = new TcpListener(localAddr, server_port);
server.Start();
logs_box.Text = logs_box.Text + "Сервер успешно запущен!\r\n";

while (true)
{
TcpClient client = server.AcceptTcpClient();
NetworkStream ns = client.GetStream();
logs_box.Text = logs_box.Text + "К серверу подключился: " + client + "\r\n";
byte[] target = new byte[100];
target = Encoding.Default.GetBytes(input_target);
logs_box.Text = logs_box.Text + "Сервер отправил клиенту: " + input_target + "\r\n";

ns.Write(target, 0, target.Length);

while (client.Connected)
{
byte[] msg = new byte[1024];
int count = ns.Read(msg, 0, msg.Length);
logs_box.Text = logs_box.Text + "Клиент прислал: " + Encoding.Default.GetString(msg, 0, count) + "\r\n";
}
}
}
catch (Exception ex)
{
logs_box.Text = logs_box.Text + ex.Message + "\r\n";
}
}

Код Кнопки запуска:

private void start_server_Click(object sender, EventArgs e)
{
logs_box.Text = logs_box.Text + "Сервер запускается...\r\n";
try
{
string ret_ip = input_ip.Text;
int ret_port = Convert.ToInt32(input_port);
string ret_target = input_target.Text;
Thread mythread = new Thread(Server(ret_ip, ret_port, ret_target));
mythread.Start();
}
catch (Exception ex)
{
logs_box.Text = logs_box.Text + ex.Message + "\r\n";
}
}

Я пытался решать эту проблему используя mainForm.changeText(this.Text); Но это кастыльно и не работает как надо. прошу помочь знающих людей.
 
Активность:
Пока что здесь никого нет