由 TypeInitializationException 引起的问题
来源:互联网 发布:排水沟流量计算软件 编辑:程序博客网 时间:2024/04/29 17:37
Alonesword
http://blog.csdn.net/alonesword/
今天写了程序升级的东东,其中用到了多线程。
后台线程负责联系服务器进行程序的升级,在升级过程中用户可以随时中断。
此程序在测试环境测试没有问题,待发布到正式环境后,问题来了。
当界面出现时,迅速的点击终止按钮,升级过程的确是立即终止了。但是当点击其他的按钮时,确实没有了反应,查看日志发现现在系统中有很多 TypeInitializationException 的错误。自己跟踪发现一种极端情况下,升级程序出现了问题。
升级过程如下:
Updater -> Other Thread -> Worker -> Connect Server -> Download Lastest Package-> Uncompress -> Overwrite file -> Finished
由于是启动的后台线程,因此可以由用户控制其升级过程,可随时中断程序的执行。
在 connect server 的过程中,使用到了 Webservice。问题来了,
如果是在执行 webservice 的类型构造 static Webservice(){} 中,用户中断了程序的执行【通过 Thread.Abort() 终止】,则下次使用 webservice 的任何方法时,都会抛出 ThreadAbortException 的错误。即使在第一次发生 ThreadAbortException 的错误时,使用 thread.ResetAbort() 来重新释放该对象,效果仍然是一样。
通过分析上述问题,将界面的控件修改了一下,等待webservices 类型构造完成,这样如果执行中断时,至少保证 类型构造函数完成。
基于此次问题,重新回顾一下调用方法时的过程:
- 由 TypeInitializationException 引起的问题
- 由Ftp引起的问题
- 由“Indexing Service”服务引起的问题
- 由显示器问题引起的死机
- 一个由模板函数引起的问题
- 由Strust2 session过期引起的问题
- 由 bind_mismatch 引起的 大量 version_count 问题
- 由 bind_mismatch 引起的 大量 version_count 问题
- 一个由__GNUC__引起的编译问题
- 由 bind_mismatch 引起的 大量 version_count 问题
- 由工程布线引起的通讯问题
- Android JNI 由GetStringUTFChars引起的问题
- 由 bind_mismatch 引起的 大量 version_count 问题
- 由Cobar引起的Mysql锁问题
- 由 bind_mismatch 引起的 大量 version_count 问题
- 由printf引起的
- Servlet中出现的由多线程引起的问题
- 由引起的空白行问题的解决方法
- 技术方向
- android sdk 编译--如何将源代码加入android.jar,以及make原理
- Access 2003 中 null 和 '' 空字符串的奇怪问题
- DM6446例子程序solution移植到Omap3530
- 工厂模式(感觉写的特别好,转了,原作者水平很高~)
- 由 TypeInitializationException 引起的问题
- extJS checkBoxColunmTree 可以选择带checkBox的树(tree、grid)
- 将软件开发过程与IBM Rational工具集成在一起
- activiti5.0.alpha3之流程引擎建立入口
- PC安装Mac OS
- IFS系统表
- fckeditor在ie6下,加载时页面会闪一下的问题
- IFS系统功能清单之一——IFS通用组件
- android源码及SDK的编译