1.11-1.12日,将一个用vs2003编写的解决方案(windows form)升级到.net2.0。升级的过程比较顺利,基本没有出现编译错误(不过有一堆警告),但是运行的时候出了不少问题,以下节选其中比较典型的几个。
1. vs2005无法启动调试
1) 症状
vs2005启动调试失败,弹出错误提示:Error while trying to run project: Unable to start debugging. 绑定句柄无效。
2) 原因
Terminal Services 被禁用。
3) 解决办法
l 打开项目属性,在“Debug”一项里,把“Enable the Visual Studio hosting process”前的钩去掉。
l 打开计算机管理,在服务里将“Terminal Services”改成Manual,或者直接启动此服务。
2. 打开窗口时出错
1) 症状
打开窗体时,发生类型为 System.Resouces.MissingMainfestResourceException的异常。异常信息为:Could not find any resources appropriate for the specified culture or the neutralculture……
2) 原因
发生错误的语句为:
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
因此初步判断为在项目转换的时候 资源文件内容丢失
3) 解决办法
打开窗体设计器,重新设置应用程序的Icon。
3. 发生类型为ThreadStateException的异常
1) 症状
执行线称操作时发生类型为ThreadStateException的异常,异常信息为 The thread is dead.State can not be accessed。程序在fx1.1里编译运行不会出现此错误。
2) 原因
发生错误的语句段如下:
refreshThread = new Thread(new ThreadStart(BeginRefresh));
refreshThread.Start();
refreshThread.IsBackground = true; // -- 错误发生在这句
因此判断为在设置IsBackground属性时refreshThread已经完成了任务
3) 解决办法profile.yahoo.com/WZMZ7345NIHCMYZK2UUE2EFMYM/
修改语句的顺序为如下:
refreshThread = new Thread(new ThreadStart(BeginRefresh));
refreshThread.IsBackground = true;
refreshThread.Start();