public static void Initialize() { lock (register_drop_sync) { if (initializing || initialized) { return; } initializing = true; } try { tsm = new TransferStatusManager (); tsm.DownloadTaskFinished += OnDownloadTaskFinishedHandler; tsm.StatusUpdated += OnStatusUpdatedHandler; download_queue = new DownloadQueue (); dispatcher = new Dispatcher (download_queue, tsm); downloads = new Hashtable (); dispatcher.Initialize (); } finally { lock (register_drop_sync) { initializing = false; } } lock (register_drop_sync) { initialized = true; } // Attach NetworkStateChange event handlers }
public static void Dispose() { lock (register_drop_sync) { if (initialized && !disposing) { disposing = true; } } try { if (downloads != null) { CancelAll (); int count = 0; do { lock (downloads.SyncRoot) { count = downloads.Count; } } while (count != 0); } if (dispatcher != null) { dispatcher.Dispose (); dispatcher = null; } download_queue = null; if (tsm != null) { tsm.Dispose (); tsm = null; } } finally { lock (register_drop_sync) { disposing = false; } } lock (register_drop_sync) { disposed = false; initialized = false; } }