public static void BeginCreateDirectory() {
            // The using statement here is OK _only_ because m_reset.WaitOne()
            // causes the code to block until the async process finishes, otherwise
            // the connection object would be disposed early. In practice, you
            // typically would not wrap the following code with a using statement.
            using (FtpClient conn = new FtpClient()) {
                m_reset.Reset();
        
                conn.Host = "localhost";
                conn.Credentials = new NetworkCredential("ftptest", "ftptest");
                conn.DeleteDirectory("/test", true);
                conn.BeginCreateDirectory("/test/path/that/should/be/created", true,
                    new AsyncCallback(CreateDirectoryCallback), conn);

                m_reset.WaitOne();
                conn.Disconnect();
            }
        }
        public static void BeginCreateDirectory()
        {
            // The using statement here is OK _only_ because m_reset.WaitOne()
            // causes the code to block until the async process finishes, otherwise
            // the connection object would be disposed early. In practice, you
            // typically would not wrap the following code with a using statement.
            using (var conn = new FtpClient()) {
                m_reset.Reset();

                conn.Host        = "localhost";
                conn.Credentials = new NetworkCredential("ftptest", "ftptest");
                conn.DeleteDirectory("/test");
                conn.BeginCreateDirectory("/test/path/that/should/be/created", true,
                                          CreateDirectoryCallback, conn);

                m_reset.WaitOne();
                conn.Disconnect();
            }
        }