C # Изменить форму из асинхронного статического класса - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть два небольших приложения, созданных с использованием C # .net в визуальных студиях (2017).

Одно - сервер , а другое - клиент .Используя System.Net & System.Net.Sockets Я заставил сервер принимать запросы на подключение в асинхронном режиме (Несколько клиентов могут отключаться и повторно подключаться в любой момент времени.)

Приложение сервераформа C # .NET Windows, с парой элементов графического интерфейса (например, richtextbox или label.) Клиентское приложение представляет собой консоль C # .NET, на самом деле ничего особенного.

IЯ столкнулся с проблемой, хотя.Внутри серверного приложения я создал файл класса (Server.cs), который имеет нестатический класс, который создает сервер и прослушивает сокеты.Методы, которые он использует для прослушивания и получения данных, являются статическими, и, поскольку он обрабатывает клиентов в асинхронном режиме, он использует другой поток.

Я звоню серверу, чтобы начать, запустив это в моем файле формы Server.SetupServer();


Проблема: Внутри Server.cs есть метод, который получает данные от клиента и пишет окно сообщения, отображающее данные, это отлично работает.Проблема возникает, когда я хочу изменить это и заставить его отображать данные внутри метки вместо (label1), это не работает.Я даже не могу выделить элемент label1 внутри файла Server.cs. (В IntelliSense, кажется, ничего не набирается)

Использование ответов - это ответ, который я часто слышал, и это сработало для меня, когда я сделалфиктивное серверное приложение, которое вместо отдельного файла для класса сервера было просто классом, созданным в самом файле формы.Я мог бы выбрать элемент label1, используя this.label1.BeginInvoke( //code here ).


Я полагаю, что это происходит, потому что либо:

  1. Я не прав, как методы Async Socketработает, и новый поток не создается
  2. Файл формы и Server.cs файл создаются по-разному (форма является экземпляром, а файл сервера отличается)
  3. Или яЯ ужасно ошибаюсь в обоих случаях

Если бы кто-то мог указать мне направление, которое я должен изучить до этого, это было бы здорово.У меня есть пара справочников, которые я буду читать, чтобы получить больше знаний о концепции потоков и делегатов, если это поможет.


Спасибо за чтение моего беспорядка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...