Обращение к данным которые формируются внутри Task - C#
Формулировка задачи:
Добрый день!
По мотивам парсера udp из этой темы Преобразование байтового сообщения из UDP
Если работа с одним потоком понятна и проста, то как работать в случае с несколькими потоками?
У меня есть класс, в который организует подключение, получение байтов на основе передаваемых параметров:
Есть инициализатор по типу
Все запускается и работает, но я не знаю как обратиться к байтам которые получает интерфейс, как я могу это сделать?
И еще вопрос, как правильнее было бы организовывать несколько подключений имея класс интерфейса?
Используя Task или более верные варианты?
public class Interface { UdpClient _client; IPAddress _multiIp; IPEndPoint _localIp; public Byte[] bytes; public Interface(string IpArg, int PortArg) { _client = new UdpClient(); _localIp = new IPEndPoint(IPAddress.Any, PortArg); _client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); _client.ExclusiveAddressUse = false; _client.Client.Bind(_localIp); Debug.WriteLine(_localIp); _multiIp = IPAddress.Parse(IpArg); _client.JoinMulticastGroup(_multiIp); while (true) { bytes = _client.Receive(ref _localIp); } } }
Task task1 = new Task(() => { Interface udp1 = new Interface(conf_ip, conf_port); });
Решение задачи: «Обращение к данным которые формируются внутри Task»
textual
Листинг программы
public UdpListener(Action<byte[]> bytesReceive, string ipAddress, int port) { this.bytesReceive = bytesReceive; IpArg = ipAddress; PortArg = port; StartListener(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д