private async Task CopyAsync()
        {
            IsBusyCopying = true;
            FindFilesCommand.RaiseCanExecuteChanged();
            _copyCancellationTokenSource = new CancellationTokenSource();
            IListWithErrorDictionary <CopiedFile> copiedFiles = null;
            var cancelled = false;

            try
            {
                copiedFiles = await CopySpecificAsync(_copyCancellationTokenSource.Token);

                var tempList = PreviouslyCopiedFileList.ToList();
                tempList.AddRange(copiedFiles);
                PreviouslyCopiedFileList = tempList;
                _serializationHelper.WriteCopiedFileList(Model.DestinationPath, tempList);
            }
            catch (TaskCanceledException)
            {
                cancelled = true;
            }
            finally
            {
                Model.Items.Clear();
                IsBusyCopying = false;
                FindFilesCommand.RaiseCanExecuteChanged();
            }

            if (!cancelled)
            {
                ShowFinishedMessage(copiedFiles != null && !copiedFiles.Errors.Any());
            }
        }