Exemple #1
0
        private void Download2Completed(DownloadCompletedEventArgs args, State state)
        {
            if (args.Error != null)
            {
                lock (state)
                {
                    if (state.IsCompleted)
                    {
                        return;
                    }
                    state.IsCompleted = true;
                }

                DownloadAndSaveCompleted?.Invoke(this, new AsyncCompletedEventArgs(args.Error, false, null));
                return;
            }

            bool readyToWrite;

            lock (state)
            {
                state.Data2    = args.Data;
                state.HasData2 = true;
                readyToWrite   = state.HasData1 && state.HasData2;
            }

            if (readyToWrite)
            {
                SaveResults(state);
            }
        }
Exemple #2
0
        private void SaveResults(State state)
        {
            _saveToDatabase.SaveCompleted += (_, args) =>
            {
                DownloadAndSaveCompleted?.Invoke(this, args);
            };

            _saveToDatabase.SaveAsync(state.Data1 + state.Data2);
        }
        public void DownloadAndSaveAsync()
        {
            _downloadFromInternet.DownloadCompleted += (_, args) =>
            {
                if (args.Error != null)
                {
                    DownloadAndSaveCompleted?.Invoke(this, new AsyncCompletedEventArgs(args.Error, false, null));
                    return;
                }

                var data = args.Data;
                _saveToDatabase.SaveCompleted += (_, args) =>
                {
                    DownloadAndSaveCompleted?.Invoke(this, new AsyncCompletedEventArgs(args.Error, false, null));
                };
                _saveToDatabase.SaveAsync(data);
            };
            _downloadFromInternet.DownloadAsync();
        }