public NSUrlConnectionWrapper(NSUrlRequest request, EscozUrlDelegate del) : base(request, del, true) { if (Connections.ContainsKey(del.Name)) { KillConnection(del.Name); } Connections.Add(del.Name, this); }
public static void Launch (string url, bool callbackOnMainThread, Action<string> callback) { Util.PushNetworkActive (); Uri uri = new Uri (url); Util.Log(uri.OriginalString); // Wake up 3G if it has been more than 3 minutes lock (minuteLock){ var nowTicks = DateTime.UtcNow.Ticks; if (nowTicks-lastLaunchTick > TimeSpan.TicksPerMinute*3) MonoTouch.ObjCRuntime.Runtime.StartWWAN (uri); lastLaunchTick = nowTicks; } var req = new NSMutableUrlRequest(new NSUrl(url), NSUrlRequestCachePolicy.ReloadIgnoringCacheData,5); //req["User-Agent"]=_UserAgent; var mydelegate = new EscozUrlDelegate(url,(result)=> { try { lock (queue) pending--; Util.PopNetworkActive (); if (callbackOnMainThread) invoker.BeginInvokeOnMainThread (delegate { callback(result); }); else callback(result); } catch (Exception e){ Util.LogException ("Launch", e); } lock (queue){ if (queue.Count > 0){ var nextRequest = queue.Dequeue (); Launch (nextRequest.Url, nextRequest.CallbackOnMainThread, nextRequest.Callback); } } }); //new NSUrlConnectionWrapper(req, mydelegate); invoker.BeginInvokeOnMainThread(()=> { new NSUrlConnection(req, mydelegate, true); }); }