本帖最后由 stjisu 于 2010-01-12 09:57:44 编辑

解决方案 »

  1.   

    你的程序并没有停留的语句 执行完了 肯定就完了呀 你用的是Timer线程,随着你主线程的结束timer会自动dispose掉 这样你开启的计划时间线程是无效的。
      

  2.   

    就算程序一直开着,你儿子也可以关闭它,只要他动点脑筋。
    你还不如设计一个一次性运行的程序,然后调用windows自带的计划任务来定时执行,并且给添加的计划任务设置访问权限,这样你儿子就无法停止或者删除该任务了。
      

  3.   

    问题补充:我测试了整个流程,从用户名判断--到星期判断--到时间判断都能正常执行。但是在许可的时间区间,确实主线程是结束了,问题是如何才能保持主线程继续运行并计时呢?MSDN里的TIMER示例,放了一个Console.ReadLine() 呵呵。
    放到CSDN来,目的还是为了向高手请教学习。
    儿子会不会去结束掉,我并不担心。他如果能动动脑筋,我还有什么好担心的。
      

  4.   

    main函数中
    "if (userName == "binhan") 
      Times.ShutdownOfWeek(); "
    这句改成
    while (ABoolVar) //ABoolVar is a varible of boolean, defualt is equal true.
    {
      if (userName == "binhan") 
        Times.ShutdownOfWeek(); 
    }
    也就是让程序进入死循环,避免控制台程序执行完操作后关闭,但这样可能会占用大量CPU资源。
    不过,我想你儿子会上网就不是傻瓜,这么显眼,他不会给你关闭了啊。
      

  5.   

    对,做成Windows服务,用timer时时的判断,符合条件关机OK
      

  6.   

    不要写控制台程序,做成WinForm.不然没有消息循环,你的窗口一下子就闪没了
      

  7.   

    那你CONSOLE.READKEY()或者console.readline()以下呀、
      

  8.   

    最终我采用了窗口方式,这个尝试非常有趣,从最最基础的winform的教程里,我只是学到放个textbox 再放个button,双击这个控件,放进代码就OK了,可是我这个程序就只放代码,应该放哪呢?
    最终,我将循环放在load里,我蒙对了,程序运行正常,然后将窗口的Opacity设置为0 现在骗骗我家小孩应该能顶一阵子。
    现在结帖,随便给捧场的朋友一点点分吧。
    有兴趣的朋友可以看看我博客里的窗口完整代码。
    http://blog.csdn.net/stjisu/archive/2010/01/15/5195892.aspx