在我的窗户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