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); } }
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; }
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); }
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); }
public void EndLoad(IAsyncResult result) { IOAsyncResult.End(result); _expectedStage = Stage.Publish; }
public void EndSave(IAsyncResult result) { IOAsyncResult.End(result); }
public static int EndReadAll(IAsyncResult asyncResult) { IOAsyncResult myar = (IOAsyncResult)asyncResult; return(myar.WaitForCompletion()); }