private void OnXMLDeserialization_Completed(IAsyncResult I) { del_xmlDeserialized Clone = (del_xmlDeserialized)I.AsyncState; FinalDeserializedObject = Clone.EndInvoke(I); OnDeserialized(); }
public object Deserialize(System.IO.Stream stream, Type ClassType) { XmlSerializer xx = new XmlSerializer(ClassType); /* ON De-Serialization Beginning [ONDESERIALIZING] */ dx = new del_xmlDeserializing(OnXMLDeserializing_Begin); IAsyncResult IAR_Begin = dx.BeginInvoke(null, null); dx.EndInvoke(IAR_Begin); /* ON De-Serialization Beginning [ONDESERIALIZING] */ /* ON De-Serialization Completed [ONDESERIALIZED] */ xd = new del_xmlDeserialized(xx.Deserialize); db = new AsyncCallback(OnXMLDeserialization_Completed); IAsyncResult IAR = xd.BeginInvoke(stream, db, xd); // This Delay Is Important Otherwise The Next Line Of Code(From Where Serialize Is Called) // Gets Executed Prior To Conclusion Of EndInvoke ,Consequently Throwing Exception. while (IAR.IsCompleted == false) { Thread.Sleep(1); } return(FinalDeserializedObject); /* ON De-Serialization Completed [ONDESERIALIZED] */ }