Exemple #1
0
        /// <summary>
        /// Asynchronusly retrieve a MD5 hash. The XMD5 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 BeginGetXMD5(this FtpClient client, string path, AsyncCallback callback, object state) {
            AsyncGetXMD5 func = new AsyncGetXMD5(client.GetXMD5);
            IAsyncResult ar = func.BeginInvoke(path, callback, state); ;

            lock (m_asyncmethods) {
                m_asyncmethods.Add(ar, func);
            }

            return ar;
        }
Exemple #2
0
        /// <summary>
        /// Begins an asynchronous operation to retrieve a XMD5 hash. The XMD5 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 BeginGetXMD5(string path, AsyncCallback callback, object state)
        {
            AsyncGetXMD5 func = new AsyncGetXMD5(GetXMD5);
            IAsyncResult ar   = func.BeginInvoke(path, callback, state);;

            lock (m_asyncmethods) {
                m_asyncmethods.Add(ar, func);
            }

            return(ar);
        }
Exemple #3
0
        /// <summary>
        /// Ends an asynchronous call to <see cref="BeginGetXMD5"/>
        /// </summary>
        /// <param name="ar">IAsyncResult returned from <see cref="BeginGetXMD5"/></param>
        /// <returns>The MD5 hash of the specified file.</returns>
        public string EndGetXMD5(IAsyncResult ar)
        {
            AsyncGetXMD5 func = null;

            lock (m_asyncmethods) {
                if (!m_asyncmethods.ContainsKey(ar))
                {
                    throw new InvalidOperationException("The specified IAsyncResult was not found in the collection.");
                }

                func = (AsyncGetXMD5)m_asyncmethods[ar];
                m_asyncmethods.Remove(ar);
            }

            return(func.EndInvoke(ar));
        }