feat: 使用排序来解决时间冲突
This commit is contained in:
		@@ -351,19 +351,16 @@ public class UDPServer
 | 
			
		||||
        // 异步锁保护 udpData
 | 
			
		||||
        await Task.Run(() =>
 | 
			
		||||
        {
 | 
			
		||||
            lock (udpData)
 | 
			
		||||
            // Handle RemoteEP
 | 
			
		||||
            if (endPoint is null)
 | 
			
		||||
            {
 | 
			
		||||
                // Handle RemoteEP
 | 
			
		||||
                if (endPoint is null)
 | 
			
		||||
                {
 | 
			
		||||
                    logger.Debug($"Receive Data from Unknown at {DateTime.Now.ToString()}:");
 | 
			
		||||
                    logger.Debug($"  Original Data : {BitConverter.ToString(data).Replace("-", " ")}");
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                var udpDataObj = RecordUDPData(data, endPoint, time, Convert.ToInt32(data[1]));
 | 
			
		||||
                PrintData(udpDataObj);
 | 
			
		||||
                logger.Debug($"Receive Data from Unknown at {DateTime.Now.ToString()}:");
 | 
			
		||||
                logger.Debug($"  Original Data : {BitConverter.ToString(data).Replace("-", " ")}");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var udpDataObj = RecordUDPData(data, endPoint, time, Convert.ToInt32(data[1]));
 | 
			
		||||
            PrintData(udpDataObj);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -385,7 +382,11 @@ public class UDPServer
 | 
			
		||||
        var dataQueue = udpData.GetOrAdd(key, _ => new ConcurrentQueue<UDPData>());
 | 
			
		||||
        dataQueue.Enqueue(data);
 | 
			
		||||
 | 
			
		||||
        logger.Debug($"Test dataQueue.Count = {dataQueue.Count}");
 | 
			
		||||
        // 对队列进行一次按时间排序
 | 
			
		||||
        var sorted = dataQueue.OrderBy(d => d.DateTime).ToList();
 | 
			
		||||
        udpData.TryUpdate(key, new ConcurrentQueue<UDPData>(sorted), dataQueue);
 | 
			
		||||
 | 
			
		||||
        logger.Debug($"Test dataQueue.Count = {udpData[key].Count}");
 | 
			
		||||
 | 
			
		||||
        return data;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user