/// <summary> /// Asynchronusly retrieve a CRC hash. The XCRC command is non-standard /// and not guaranteed to work. /// </summary> /// <param name="client">FtpClient Object</param> /// <param name="path">Full or relative path to remote file</param> /// <param name="callback">AsyncCallback</param> /// <param name="state">State Object</param> /// <returns>IAsyncResult</returns> public static IAsyncResult BeginGetXCRC(this FtpClient client, string path, AsyncCallback callback, object state) { AsyncGetXCRC func = new AsyncGetXCRC(client.GetXCRC); IAsyncResult ar = func.BeginInvoke(path, callback, state); ; lock (m_asyncmethods) { m_asyncmethods.Add(ar, func); } return ar; }
/// <summary> /// Begins an asynchronous operation to retrieve a CRC hash. The XCRC command is non-standard /// and not guaranteed to work. /// </summary> /// <param name="path">Full or relative path to remote file</param> /// <param name="callback">AsyncCallback</param> /// <param name="state">State Object</param> /// <returns>IAsyncResult</returns> public IAsyncResult BeginGetXCRC(string path, AsyncCallback callback, object state) { AsyncGetXCRC func = new AsyncGetXCRC(GetXCRC); IAsyncResult ar = func.BeginInvoke(path, callback, state);; lock (m_asyncmethods) { m_asyncmethods.Add(ar, func); } return(ar); }
/// <summary> /// Ends an asynchronous call to <see cref="BeginGetXCRC"/> /// </summary> /// <param name="ar">IAsyncResult returned from <see cref="BeginGetXCRC"/></param> /// <returns>The CRC hash of the specified file.</returns> public string EndGetXCRC(IAsyncResult ar) { AsyncGetXCRC func = null; lock (m_asyncmethods) { if (!m_asyncmethods.ContainsKey(ar)) { throw new InvalidOperationException("The specified IAsyncResult was not found in the collection."); } func = (AsyncGetXCRC)m_asyncmethods[ar]; m_asyncmethods.Remove(ar); } return(func.EndInvoke(ar)); }