日期:2014-05-19  浏览次数:21061 次

自启动的程序在系统启动之后报错
我做了一个WINFORM的程序,随系统启动而自动启动,程序运行后读取配置文件中的信息,然后根据TIMER控件来轮询数据读取数据。但是系统一启动就报错。显示错误的地方在读取配置的地方querySpan   =   config.AppSettings.Settings[ "QuerySpan "].Value;,说是对象未设置到实例。
但是,我在调试运行的时候,都是没有问题的。而且如果我在系统启动后,再手动启动,也是不会发生错误的,不知道是什么原因。

另外这个程序我没有提供退出的地方,而且在界面上打叉的地方也屏蔽掉了,结果电脑关机的时候,关不掉了,不知道是什么原因?请教

------解决方案--------------------
解决关机问题
在mainForm中重写WndProc:
const int WM_QUERYENDSESSION = 0x0011;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{

case WM_QUERYENDSESSION:
this.Close();
this.Dispose();
Application.Exit();

//m.Result = (IntPtr)0;
break;
default:
break;
}
base.WndProc(ref m);
}
------解决方案--------------------
报错的问题,你是否可以把写入到注册表改成放快捷方式到启动文件夹,你可以尝试一下

关机关不了的问题,二楼的朋友写的很对,不过 //m.Result = (IntPtr)0;这句不用注释掉,不然只能关程序,还是不能关机的