예제 #1
0
파일: HTTP.cs 프로젝트: Anttifer/Jypeli
        private void DoWithCallback(IAsyncResult ar)
        {
            try
            {
                AsyncOperation op        = (AsyncOperation)ar.AsyncState;
                WebResponse    response  = op.Request.EndGetResponse(ar);
                Stream         resStream = response.GetResponseStream();
                MemoryStream   memStream = new MemoryStream();
                resStream.CopyStreamTo(memStream);
                resStream.Dispose();

#if WINDOWS_STOREAPP
                response.Dispose();
#else
                response.Close();
#endif

                memStream.Seek(0, SeekOrigin.Begin);
                op.Callback(new StorageFile(op.Request.RequestUri.AbsoluteUri, memStream));
                memStream.Dispose();

                foreach (var trig in triggers.FindAll(t => t.ops.Any(o => o.Result == ar)))
                {
                    trig.triggered++;
                }
            }
            catch (WebException)
            {
                // Return if aborted
                return;
            }
        }