Esempio n. 1
0
        public override void ExecuteAsync()
        {
            lock (SyncRoot) {
                SetStatus (TaskStatus.Running);

                if (mre != null) {
                    mre.Reset ();
                }
            }

            try {
                wc = new AsyncWebClient ();
                wc.Timeout = (30 * 1000); // 30 Seconds
                if (feed.LastDownloadError == FeedDownloadError.None && feed.LastDownloadTime != DateTime.MinValue) {
                    wc.IfModifiedSince = feed.LastDownloadTime.ToUniversalTime ();
                }
                wc.DownloadStringCompleted += OnDownloadDataReceived;

                feed.DownloadStatus = FeedDownloadStatus.Downloading;
                wc.DownloadStringAsync (new Uri (feed.Url));
            } catch (Exception e) {
                if (wc != null) {
                    wc.DownloadStringCompleted -= OnDownloadDataReceived;
                }

                EmitCompletionEvents (FeedDownloadError.DownloadFailed);
                Log.Error (e);
            }
        }