1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using System;
- using System.Net;
- using System.Net.FtpClient;
- using System.Threading;
- namespace Examples {
- public static class BeginDisconnectExample {
- static ManualResetEvent m_reset = new ManualResetEvent(false);
- public static void BeginDisconnect() {
- // 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.Connect();
- conn.BeginDisconnect(new AsyncCallback(BeginDisconnectCallback), conn);
- m_reset.WaitOne();
- }
- }
- static void BeginDisconnectCallback(IAsyncResult ar) {
- FtpClient conn = ar.AsyncState as FtpClient;
- try {
- if (conn == null)
- throw new InvalidOperationException("The FtpControlConnection object is null!");
- conn.EndDisconnect(ar);
- }
- catch (Exception ex) {
- Console.WriteLine(ex.ToString());
- }
- finally {
- m_reset.Set();
- }
- }
- }
- }
|