Обращение к данным которые формируются внутри 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();
}