zoukankan      html  css  js  c++  java
  • 由 TypeInitializationException 引起的问题

     

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
    内部邀请码:C8E245J (不写邀请码,没有现金送)
    国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 

     

     

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

     

     

    今天写了程序升级的东东,其中用到了多线程。

    后台线程负责联系服务器进行程序的升级,在升级过程中用户可以随时中断。

    此程序在测试环境测试没有问题,待发布到正式环境后,问题来了。

     

    当界面出现时,迅速的点击终止按钮,升级过程的确是立即终止了。但是当点击其他的按钮时,确实没有了反应,查看日志发现现在系统中有很多 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 类型构造完成,这样如果执行中断时,至少保证 类型构造函数完成。

    基于此次问题,重新回顾一下调用方法时的过程:

  • 相关阅读:
    BZOJ1513: [POI2006]Tet-Tetris 3D
    BZOJ3210: 花神的浇花集会
    BZOJ3207: 花神的嘲讽计划Ⅰ
    BZOJ3170: [Tjoi 2013]松鼠聚会
    BZOJ3747: [POI2015]Kinoman
    解题:POI 2008 Subdivision of Kingdom
    解题:JSOI 2007 重要的城市
    解题:USACO13NOV No Change
    解题:洛谷1120 小木棍
    解题:SCOI 2008 配对
  • 原文地址:https://www.cnblogs.com/AloneSword/p/1774327.html
Copyright © 2011-2022 走看看