Xamarin Form - TaskCanceledException, выдаваемое в ScanFilesToFolderAsync - PullRequest
2 голосов
/ 15 апреля 2019

в моем приложении UWP я работаю над функциональностью сканирования.В этом приложении пользователь может сканировать документ через сканер, выбрав планшет или автоподатчик. Теперь проблема заключается в том, что когда я пытаюсь отсканировать документ, исключение может быть отменено.

, пожалуйста, помогите ..

спасибо заранее.:)

хорошего дня ...:)

private async void Btnscan_Click(object sender, RoutedEventArgs e)
    {

        FolderPicker folderPicker = new FolderPicker();
        folderPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
        folderPicker.FileTypeFilter.Add("*");

        StorageFolder folder = await folderPicker.PickSingleFolderAsync();
//set the destination folder name for scan images.


        DeviceInformationDisplay selectedScanner = CmbScannerList.SelectedItem as DeviceInformationDisplay; // here i got the selected scanner.

        // scanner id is := "\\\\?\\ROOT#IMAGE#0000#{6bdd1fc6-810f-11d0-bec7-08002be2092f}"

        ScanToFolder(selectedScanner.id, folder);


    }

функция Сканирование в папку

 public async void ScanToFolder(string deviceId, StorageFolder folder)
    {
        try
        {
 cancellationToken = new CancellationTokenSource();

            ImageScanner myScanner = await ImageScanner.FromIdAsync(deviceId);

            if (myScanner.IsScanSourceSupported(ImageScannerScanSource.Flatbed))
            {
                var result = await myScanner.ScanFilesToFolderAsync(ImageScannerScanSource.Flatbed, folder).AsTask(cancellationToken.Token); // through an exception(A Task Was Canceled):(
Utils.DisplayImageAndScanCompleteMessage(result.ScannedFiles, DisplayImage);

            }

        }

        catch (Exception ex)
        {
            // here i got the exception.
        }

    }

Обновлено:

Теперь яустановите DeviceClass на ALL.

   private void StartWatcher()
    {
        resultCollection.Clear();
        DeviceWatcher deviceWatcher;

        deviceWatcher = DeviceInformation.CreateWatcher(DeviceClass.All); // set Image scanner to all. 
       deviceWatcherHelper.StartWatcher(deviceWatcher);
  }

После запуска проекта в списке сканеров я получил все подключенные устройства, на которых получил имя моего сканера. Это: при попытке передать это имя выдает ошибку в imagescannerSystem.Exception: «Exception from HRESULT: 0x80210015» означает, что устройство не найдено.Теперь я вхожу в ImageScanner. У меня ничего нет в списке сканеров.

enter image description here

и в приложении сканера HP я получил это имя.и он хорошо сканирует :( в списке сканеров у меня нет этого имени в моем приложении. :( enter image description here

в настройках моего компьютера -> устройства -> сканер и принтеры iполучил те имя.

enter image description here

1 Ответ

1 голос
/ 18 апреля 2019

Переписав решение проблемы в качестве ответа. Я протестировал код на своей машине, где он вел себя правильно, и утверждал, что проблема, скорее всего, связана с драйвером. Это было подтверждено OP, и переустановка драйвера помогла возобновить сканирование.

...