/// <summary> /// Asynchronusly retrieve a MD5 hash. The MD5 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 BeginGetMD5(this FtpClient client, string path, AsyncCallback callback, object state) { AsyncGetMD5 func = new AsyncGetMD5(client.GetMD5); IAsyncResult ar = func.BeginInvoke(path, callback, state); ; lock (m_asyncmethods) { m_asyncmethods.Add(ar, func); } return ar; }
/// <summary> /// Asynchronusly retrieve a MD5 hash. The MD5 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 BeginGetMD5(this FtpClient client, string path, AsyncCallback callback, object state) { AsyncGetMD5 func = new AsyncGetMD5(client.GetMD5); 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 MD5 hash. The MD5 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 BeginGetMD5(string path, AsyncCallback callback, object state) { var func = new AsyncGetMD5(GetMD5); IAsyncResult ar; lock (m_asyncmethods) { ar = func.BeginInvoke(path, callback, state); m_asyncmethods.Add(ar, func); } return(ar); }
/// <summary> /// Ends an asynchronous call to <see cref="BeginGetMD5"/> /// </summary> /// <param name="ar">IAsyncResult returned from <see cref="BeginGetMD5"/></param> /// <returns>The MD5 hash of the specified file.</returns> public string EndGetMD5(IAsyncResult ar) { AsyncGetMD5 func = null; lock (m_asyncmethods) { if (!m_asyncmethods.ContainsKey(ar)) { throw new InvalidOperationException("The specified IAsyncResult was not found in the collection."); } func = (AsyncGetMD5)m_asyncmethods[ar]; m_asyncmethods.Remove(ar); } return(func.EndInvoke(ar)); }