C# Xamarin表单-在扫描文件ToFolderAsync上引发的TaskCanceledException
在我的UWP应用程序中,我正在研究扫描功能。在此应用程序中,用户可以通过选择平板或自动进纸器通过扫描仪扫描文档。现在的问题是,当我尝试扫描文档时,会出现en异常,任务被取消 请帮忙 提前感谢。:) 祝你今天愉快……:) 功能扫描到文件夹C# Xamarin表单-在扫描文件ToFolderAsync上引发的TaskCanceledException,c#,xamarin.forms,uwp,win-universal-app,C#,Xamarin.forms,Uwp,Win Universal App,在我的UWP应用程序中,我正在研究扫描功能。在此应用程序中,用户可以通过选择平板或自动进纸器通过扫描仪扫描文档。现在的问题是,当我尝试扫描文档时,会出现en异常,任务被取消 请帮忙 提前感谢。:) 祝你今天愉快……:) 功能扫描到文件夹 public async void ScanToFolder(string deviceId, StorageFolder folder) { try { cancellationToken = new Cancell
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);
}
在扫描仪列表中运行项目后,我得到了所有连接的设备,其中我得到了扫描仪名称:当我尝试传递此名称时,imagescanner系统中出现错误。异常:“来自HRESULT的异常:0x80210015”表示找不到设备。
现在我把所有东西都换成了ImageScanner我在扫描仪列表中什么都没有
在HP扫描仪应用程序中,我得到了这个名字。它扫描得很好:(在扫描列表中,我的应用程序中没有这个名字。)
在我的pc设置->设备->扫描仪和打印机上,我得到了这些名称
重新编写问题的解决方案作为答案。我在我的机器上测试了代码,它的行为正确,并认为问题最有可能是驱动程序问题。这已由OP确认,重新安装驱动程序有助于再次进行扫描。声明的
取消令牌在哪里?它不是实际的吗是否被取消?我已经在我的机器上测试了你的项目,它看起来确实像预期的那样工作,我没有得到任何TaskCanceledException
。也许你的扫描仪驱动程序有问题?你能在其他机器上或其他扫描仪上测试吗?您好,很抱歉回复太晚,TWAIN.dll不能直接在Xamarin中使用。表单aND UWP,但是您可以使用桌面扩展()来启动完全信任程序集并与之通信。我有一个三星扫描仪,它有一个扫描仪!我已经把解决方案改写为一个答案,请考虑接受它,这样问题就解决了。快乐编码!
private void StartWatcher()
{
resultCollection.Clear();
DeviceWatcher deviceWatcher;
deviceWatcher = DeviceInformation.CreateWatcher(DeviceClass.All); // set Image scanner to all.
deviceWatcherHelper.StartWatcher(deviceWatcher);
}