コード例 #1
0
        private static void asyncReadAllReadCallback(IAsyncResult ar)
        {
            IOAsyncResult myar = (IOAsyncResult)ar.AsyncState;

            try {
                int len = myar.Stream.EndRead(ar);
                if (len <= 0)
                {
                    throw new EndOfStreamException();
                }
                myar.Offset += len;
                myar.Left   -= len;
                myar.Count  += len;
                if (myar.Left > 0)
                {
                    myar.Stream.BeginRead(myar.Buffer, myar.Offset, myar.Left, asyncReadAllReadCallback, ar);
                }
                else
                {
                    myar.SetCompleted(false, myar.Count, null);
                }
            } catch (Exception ex) {
                myar.SetCompleted(false, ex);
            }
        }
コード例 #2
0
ファイル: DirectoryInfo.cs プロジェクト: hallvar/Joddes.CS
        public static IAsyncResult BeginGetDirectories (this DirectoryInfo di, AsyncCallback callback, object asyncState)
        {
            var result = new IOAsyncResult (asyncState);

            var xhr = new Joddes.CS.Html5.XmlHttpRequest();

            xhr.Open ("PROPFIND", di.FullName);

            xhr.SetRequestHeader ("Content-Type", "text/xml; charset=UTF-8");
            xhr.SetRequestHeader ("Depth", "1");
            
            xhr.ReadyStateChange += e =>
            {
                if (xhr.readyState == xhr.DONE) {

                    if(xhr.Status != 404) {
                        var elements = xhr.ResponseXML.GetElementsByTagName ("href");
                        result.Data = elements;
                    }

                    callback (result);
                }
            };

            string webdavCmd = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<D:propfind xmlns:D=\"DAV:\">" + "<D:allprop />" + "</D:propfind>";

            xhr.Send (webdavCmd);

            return result;
        }
コード例 #3
0
        public static IAsyncResult BeginReadAll(Stream stream, byte[] buffer, int offset, int count, AsyncCallback callback, object state)
        {
            IOAsyncResult ar = new IOAsyncResult(callback, state)
            {
                Stream = stream, Buffer = buffer, Offset = 0, Count = 0, Left = count
            };

            if (ar.Left <= 0)
            {
                ar.SetCompleted(true, null);
                return(ar);
            }
            stream.BeginRead(ar.Buffer, ar.Offset, ar.Left, asyncReadAllReadCallback, ar);
            return(ar);
        }
コード例 #4
0
ファイル: Connection.cs プロジェクト: longde123/playscript
            static void OnAsyncIOComplete(object state)
            {
                IOAsyncResult thisPtr = (IOAsyncResult)state;

                Exception completionException = null;

                try
                {
                    thisPtr.HandleIO(thisPtr.connection);
                }
#pragma warning suppress 56500 // [....], transferring exception to another thread
                catch (Exception e)
                {
                    if (Fx.IsFatal(e))
                    {
                        throw;
                    }

                    completionException = e;
                }
                thisPtr.Complete(false, completionException);
            }
コード例 #5
0
 public void EndLoad(IAsyncResult result)
 {
     IOAsyncResult.End(result);
     _expectedStage = Stage.Publish;
 }
コード例 #6
0
 public void EndSave(IAsyncResult result)
 {
     IOAsyncResult.End(result);
 }
コード例 #7
0
        public static int EndReadAll(IAsyncResult asyncResult)
        {
            IOAsyncResult myar = (IOAsyncResult)asyncResult;

            return(myar.WaitForCompletion());
        }