private async void DownloadThread(object state) { var socket = new AresUdpSocket(new ChannelFormatter()); socket.PacketReceived += UdpPacketReceived; socket.ReceiveAsync(); int i = 0; while (IsDownloading) { DateTime now = DateTime.Now; Channels .Skip(i) .Take(10) .ForEach(s => { s.LastSendInfo = now; socket.SendAsync( new SendInfo(), new IPEndPoint(s.ExternalIp, s.Port)); }); i = Math.Min(Channels.Count, i + 10); await CheckDownloadTimeout(socket); } }
void StartSocket(int port) { socket = new AresUdpSocket(new ChannelFormatter()); socket.PacketReceived += UdpPacketReceived; socket.Bind(new IPEndPoint(IPAddress.Any, port)); udptimer.Change(TimeSpan.Zero, ticklength); IsRunning = true; socket.ReceiveAsync(); }
public void Stop() { running = false; timer.Change(-1, -1); socket.Dispose(); socket = null; FirewallOpen = false; FinishedTestingFirewall = false; SaveCache(); }
void StartSocket() { socket = new AresUdpSocket(new ChannelFormatter()); socket.Exception += SocketException; socket.PacketReceived += PacketReceived; socket.Bind(new IPEndPoint(IPAddress.Any, server.Config.Port)); timer.Change(TimeSpan.Zero, ticklength); socket.ReceiveAsync(); }
public void Stop() { IsRunning = false; udptimer.Change(-1, -1); if (socket != null) { socket.PacketReceived -= UdpPacketReceived; socket.Dispose(); socket = null; } FirewallOpen = false; TestingFirewall = true; }
public void Stop() { running = false; udptimer.Change(-1, -1); if (socket != null) { socket.Exception -= SocketException; socket.PacketReceived -= UdpPacketReceived; socket.Dispose(); socket = null; } FirewallOpen = false; FinishedTestingFirewall = false; }
private async Task CheckDownloadTimeout(AresUdpSocket socket) { DateTime now = DateTime.Now; if (now.Subtract(lastackinfo).TotalSeconds >= 30) { IsDownloading = false; try { socket.Close(); } catch { } socket.Dispose(); DownloadComplete?.Invoke(this, EventArgs.Empty); } else { await Task.Delay(1000); } }