Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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));
        }