我目前正在開發一個模塊,用戶可以在其中掃描文檔并保存它們。目前,正在使用的工作代碼來自Jeske,來自GitHub(鏈接在這里)。客戶使用的掃描儀是:愛普生完美V600。前面提到的代碼就像一個魅力,預計會出現1種情況:如果掃描儀進入睡眠/非活動模式,并且用戶嘗試在該狀態下掃描文檔,則應用程序將在等待掃描儀響應時自行凍結(有時它確實如此,有時它沒有)。確切地說,程序凍結在此特定行:WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item, wiaFormatBMP, false);我的問題是:有沒有辦法防止應用程序在嘗試從給定的掃描儀掃描時凍結?(僅當掃描儀處于睡眠/非活動模式時,才會發生此問題)
1 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
您可以使用并發來防止阻塞。如果每當操作未結束時,您也可以將 CancelToken 與 CancelTokenSource 一起使用,則可以向您的功能發送取消信號,以便中止掃描操作。
public Task Scan()
{
....
WIA.ImageFile image = (WIA.ImageFile)wiaCommonDialog.ShowTransfer(item, wiaFormatBMP, false);
...
}
然后在您的主程序中
//wait 20 seconds before cancellation
CancellationTokenSource cts= new CancellationTokenSource(20000);
var myTask = Task.Run(() => Scan(), cts.Token);
await myTask;
- 1 回答
- 0 關注
- 93 瀏覽
添加回答
舉報
0/150
提交
取消