在我的窗戶silverlight的手機應用程序,我點擊一個按鈕來掃描條形碼,然後sucesfuly掃描條碼,但每當我按下按鈕再次掃描,它給我是一個奇怪的例外。如何在Windows中的Silverlight應用程序,而不是使用線程睡眠任務延遲
System.Reflection.TargetInvocationException was unhandled
消息:類型System.Reflection.TargetInvocationException'的未處理的異常發生在System.Windows.ni.dll 附加信息:異常已被調用的目標拋出。
我查了很多關於它,並有一個想法,可能是由於我的Thread.Sleep代碼在該掃描功能。
我會把我的代碼放在下面,請告訴我如何使用Task.delay而不是Thread.sleep並解決問題?我認爲這是一個線程的問題,我不是非常好,多線程,所以請幫助
這裏是我的代碼
private async void ScanClick(object sender, EventArgs e)
{
var scanner = new MobileBarcodeScanner();
var check = true;
var opts = new MobileBarcodeScanningOptions();
opts.PossibleFormats = new List<BarcodeFormat>
{
BarcodeFormat.EAN_8,
BarcodeFormat.EAN_13
};
Thread MT = new Thread(new ThreadStart(delegate
{
while (check)
{
scanner.AutoFocus();
Thread.Sleep(autoFocusInterval);//value of autoFocus is 2000
}
}));
MT.Start();
var result = await scanner.Scan(opts);
if(result!=null)
{
if(MT.IsAlive)
{
MT.Abort();//I try to abort to prevent the error, but it doesnt help.
}
MessageBox.Show("Scanned code : " + result.Text);
result = null;
MT = null;
scanner = null;
opts = null;
check = false;
}
}
注意即使我只需點擊第一次掃描按鈕並打開掃描儀,然後按下而不掃描任何內容,然後再次返回時會產生異常。
所以第一次罰款不管怎麼樣,但是所以每隔一段時間進入掃描儀就會產生異常。
**原因需要延時:掃描我使用(ZXing.Net.Mobile)庫中** 犯規自動對焦本身,所以直到條形碼得到掃描的結果,我要開始自動手動對焦,每2秒鐘一次。
預先感謝
爲什麼想要在第一時間推遲? – Sparrow
請參閱編輯後,我已經解釋延遲在最後的原因。如果你能幫助我,我會非常感激,我現在想解決這個問題數週。謝謝 – touseef
你試過'加入'那個線程? – VMAtm