Passage serveur UDP OSC en Asynchrone (suppression ThreadLoop)

This commit is contained in:
Arnaud HOUDELETTE-LANGLOIS 2026-10-29 00:28:09 +01:00
parent ea8ee8040a
commit 0a3b58f73d

View file

@ -3,6 +3,7 @@ using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace DMX2
{
@ -10,44 +11,39 @@ namespace DMX2
{
UdpClient udpCli=null;
Thread pollThread = null;
bool running=true;
public OSCServer ()
{
pollThread = new Thread(new ThreadStart(Loop));
pollThread.Start();
udpCli = new UdpClient(7772);
udpCli.BeginReceive(UdpCliReceive,null);
}
void Loop ()
void UdpCliReceive(IAsyncResult ar)
{
udpCli = new UdpClient (7772);
if (!ar.IsCompleted) return;
byte[] recv;
IPEndPoint remep = new IPEndPoint (IPAddress.Any, 0);
try {
while (running) {
recv = udpCli.Receive (ref remep);
//Console.WriteLine(remep);
IPEndPoint remep = new IPEndPoint(IPAddress.Any, 0);
recv = udpCli.EndReceive(ar, ref remep);
OSCMessage msg = new OSCMessage(recv);
#if DEBUG
Console.Write(msg.Address);
Console.Write(" ");
foreach(var arg in msg.Args)
foreach (var arg in msg.Args)
Console.WriteLine(arg.GetString());
#endif
try{
ProcessMessage(msg,remep);
}catch{}
}
} catch (SocketException ex) {
}
finally {
try
{
ProcessMessage(msg, remep);
}
catch { }
udpCli.BeginReceive(UdpCliReceive, null);
}
/// <summary>
/// /master <X---
/// /masterseq/
@ -347,15 +343,8 @@ namespace DMX2
protected virtual void Dispose (bool disposing)
{
if (disposing) {
running=false;
if(udpCli!=null)
udpCli.Close();
if(pollThread!=null)
{
if(!pollThread.Join(100))
pollThread.Abort();
pollThread=null;
}
}
}