SUMTEC -- There's a thing in my bloglet.

But it's not only one. It's many. It's the same as other things but it exactly likes nothing else...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  263 随笔 :: 19 文章 :: 3009 评论 :: 74万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
前一段时间已经发现CF在载入资源的时候会怪怪的,但是这一段时间都不曾记起要对这个问题研究一下。最近又发现这个问题了,实在是恼火。俗话说择日不如撞日(粤语),唉,就今天啦。这个问题是在VS2k5里面调试的时候才发现的,以前在VS2k3里面一直都不知道有这么一个问题存在。事情是这样的:

有一次在VS2k5里面调试运行一个SmartPhone的程序的时候,发现突然在Output窗口里面显示了好几个First Chance Exception,仔细一看发现有两个FileNotFoundException,以及一大堆的UnathorizedException。而这些异常却没有引起中断,也就是说在程序的某一个部分被try...catch截获了。但问题是我的代码里面根本就没有任何的try...catch,不应该呀?后来仔细想想,又想到using也截获异常,所以一下子下不了定论。而我这个程序只有关于画图方面的代码,因此问题应该在画图相关的部分。我立刻想到有两种可能性,第一种是加载资源的时候引起了异常,另外一种可能是画图代码由一些可能引起异常、但是系统能够处理的参数。由于没有时间,开始的时候就没有仔细探索,反正能够正常使用。

而昨天呢,我稍微研究了一下,发现问题确实是出在加载资源的部分。当你的SmartDevice程序里面包含了图片资源的话,并且通过资源管理器的GetObject获取这项资源的话,就会在内部引发一系列的异常——第一次引发两个,第二次引发另外两个,后面的就每次引发一个异常。简单的跟踪发现,问题可能出在本地化方面的问题。似乎在GetObject的控制流当中的某一个环节,会检查你指定的“文化(CultureInfo,不知道中文术语是否这么讲)”,然后找到相应的资源文件载入。这个资源文件是干什么的我没有仔细看,这只是一个粗略的分析,估计是用来显示出错信息的。由于没有指定CultureInfo,或者指定CultureInfo的资源文件没有被安装上来,结果就引发了FileNotFoundException了。至于后面的UnauthorizedException,我估计就是一开始引发了FileNotFound之后,某些初始化步骤出现问题的副作用引起的。

这个问题也许值得花时间去了解清楚。大家都知道抛出一个Exception,无论代码有没有catch,时间开销都是相当大的。可以说如果你的程序有图片资源,其启动速度就会跟没有图片资源的相差非常大。大家可以试一下建立一个空白的程序,运行一下感受速度。然后在这个项目的Form上面添加3个PictureBox,设置它们的Image属性,分别换上不同的图片。再次运行的时候就会感到速度会有差异了(应该还好,不算很明显。)如果在VS2k5里面做这个实验就再好不过了,因为能够在Output窗口上面看到很明显的First chance exception项目的。这个CF如果跟桌面的.NET Frameword对比,真算不上是精品工程,越用就越多问题。

呵呵,不知道现在VS2k5的beta里面是否有中文的Rom了呢?如果没有的话,下一次来看我的解决方案,今天不在工作机器上面,很多东西没法写,怕不准确害死人。OK,今天就这些。
posted on   Sumtec  阅读(1917)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示