public override void StopKeepAlive() { if (_interval != null) { Coroutines.ClearInterval(_interval); _interval = null; _lastActivity = -1; } List <Request> backup = new List <Request>(); if (_current != null) { // mark as suspend & try re-queue EB.Debug.LogWarning("StopKeepAlive: Suspend current request {0}", _current.url); _current.suspend = true; if (_current.suspendMethod != Request.eSuspendMethod.Retry) { backup.Add(_current); } } if (_queue.Count > 0) { backup.AddRange(_queue); _queue.Clear(); } for (int i = 0; i < backup.Count; ++i) { if (backup[i].suspendMethod == Request.eSuspendMethod.Retry) { EB.Debug.LogWarning("StopKeepAlive: Backup request {0}", backup[i].url); _backup.Enqueue(backup[i]); } else if (backup[i].suspendMethod == Request.eSuspendMethod.Finish) { EB.Debug.LogWarning("StopKeepAlive: Finish request {0}", backup[i].url); backup[i].suspend = true; if (SuspendHandler != null) { Response res = new Response(backup[i]); SuspendHandler(res); } } else if (backup[i].suspendMethod == Request.eSuspendMethod.Break) { EB.Debug.LogWarning("StopKeepAlive: Break request {0}", backup[i].url); } } EB.Net.WebRequest.CleanConnections(); }