首页 新闻 会员 周边 捐助

Silverlight无响应

0
[已解决问题] 解决于 2013-08-07 14:40

Silverlight中,调用js,js调用java的Applet插件,Applet插件调用本机上的扫描驱动,打开扫描仪。由于扫描操作比较耗时,而silverlight调用js会造成silverlight的进程阻断。时间长了之后会提示silverlight插件无响应。这个问题怎么解决?

zhangzl的主页 zhangzl | 菜鸟二级 | 园豆:461
提问于:2013-08-06 16:14
< >
分享
最佳答案
0

silverlight 中能走线程吧,启动一个线程去调用扫描仪。

http://msdn.microsoft.com/zh-cn/library/cc221403(v=VS.95).aspx

奖励园豆:5
Launcher | 高人七级 |园豆:45050 | 2013-08-06 16:18

昨天在百度里看见一个帖子说BackgroundWorker也会造成silverlight的阻塞。

zhangzl | 园豆:461 (菜鸟二级) | 2013-08-07 08:54

@zhangzl: 建议你认真阅读下我提供的链接,以及其它章节,比如:托管线程处理。会不会造成阻塞,你可以自己测试。从理论模型上来讲,线程 A 和 线程 B 只要没有资源争夺,就不存在谁阻塞谁的问题。但实际的情况下,根据硬件的特性,OS的调度,运行时的机制,以及应用的逻辑,A 和 B 会存在资源争夺情况,争夺的激烈程度在用户忍受的范围内时,我们就认为不会阻塞。

Launcher | 园豆:45050 (高人七级) | 2013-08-07 09:34

@Launcher: 谢谢你的回答,启动线程是一个好的方法,但是这个方法:HtmlPage.Window.Invoke("startScan");只能执行在UI线程中,让我比较纠结。

zhangzl | 园豆:461 (菜鸟二级) | 2013-08-07 10:33

@zhangzl:this.Dispatcher.BeginInvoke(newAction(()=> settings =HtmlPage.Window.Invoke

Launcher | 园豆:45050 (高人七级) | 2013-08-07 10:50

@Launcher: 这个执行不就又回到主线程了吗

zhangzl | 园豆:461 (菜鸟二级) | 2013-08-07 12:24

@zhangzl: 哦,那它有没有立即返回的调用方式呢?比如:startScan 立即返回,然后有另一个方法 queryScanProgress 来查询进度?

或者,它有没有 api 带 callback的,类似 WriteFile 的方式?

Launcher | 园豆:45050 (高人七级) | 2013-08-07 13:09

@Launcher: 那个得修改扫描的Java Applet,找了领导研究这个的可行性去了

zhangzl | 园豆:461 (菜鸟二级) | 2013-08-07 14:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册