我已经使用Scandit框架创建了扫描方法。因为我使用的是Xamarin.Forms,所以没有等待扫描的选项。Scandit准备了作为扫描结果的回调。我想把它包装成一个可以和awaiter一起使用的方法。
这就是我所做的:
public async Task<Operation<string>> ScanAsync(CancellationToken cancellationToken = default(CancellationToken))
{
try
{
_codeScannedTcs = new TaskCompletionSource<Operation<string>>();
ScanditService.BarcodePicker.DidScan += OnScanFinished;
await ScanditService.BarcodePicker.StartScanningAsync();
var result = await Task.WhenAny(_codeScannedTcs.Task);
return result.Result;
}
catch (TaskCanceledException)
{
return Operation<string>.FailedOperation("A task was canceled");
}
catch (Exception ex)
{
return Operation<string>.FailedOperation(ex.Message);
}
finally
{
_codeScannedTcs = null;
ScanditService.BarcodePicker.DidScan -= OnScanFinished;
}
}在这种情况下,我如何使用取消令牌在任何时间中断扫描?
https://stackoverflow.com/questions/51367599
复制相似问题