我做了一个WINFORM的程序,随系统启动而自动启动,程序运行后读取配置文件中的信息,然后根据TIMER控件来轮询数据读取数据。但是系统一启动就报错。显示错误的地方在读取配置的地方querySpan = config.AppSettings.Settings["QuerySpan"].Value;,说是对象未设置到实例。
但是,我在调试运行的时候,都是没有问题的。而且如果我在系统启动后,再手动启动,也是不会发生错误的,不知道是什么原因。另外这个程序我没有提供退出的地方,而且在界面上打叉的地方也屏蔽掉了,结果电脑关机的时候,关不掉了,不知道是什么原因?请教

解决方案 »

  1.   

    貌似说对象未创建实例应该就是他在读取 config文件时找不到文件或者找到不到要读的数据了检查下
      

  2.   

    解决关机问题
    在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);
            }
      

  3.   

    wt3056(「马儿.快爬!) :加上你的代码之后,能关闭程序了,但是关机还是关不了,还要再关一遍才行pxxx123() :
    事件日志中没有
      

  4.   

    sashami() :好像不是这个原因
      

  5.   

    报错的问题,你是否可以把写入到注册表改成放快捷方式到启动文件夹,你可以尝试一下关机关不了的问题,二楼的朋友写的很对,不过 //m.Result = (IntPtr)0;这句不用注释掉,不然只能关程序,还是不能关机的