自动触发timer控件?
把timer去掉放到计划任务里自动执行

解决方案 »

  1.   


    我是新人,麻烦您说下计划任务是什么啊???
    服务器上有计划任务您是说去掉timer控件?那helloworld()就没法调用了呀!
      

  2.   

    "让系统自动触发timer控件"
    拜托你有点基础行吗
    timer控件是在你自己做的exe所在的进程里
    你让系统触发它?你到底想干什么,敢不敢说清楚,不要老拍脑袋想方案
      

  3.   


    亲,我是第一次接触这些,我现在就想在服务器上,自动调用hellloworld()这个函数
      

  4.   

    启动定时器的代码放在golbal.asax里面的Application_Start里面
      

  5.   


    我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。
      

  6.   

    你先在自己机器上测试好了,再扔服务器上去.
    逻辑根本性错误.
    你机器上不能发报表,你可以把hello world函数换成messagebox.show之类的
    时间上也可以缩短,看到底执行不执行.你在timer里调用按钮事件,不能把timer的sender和e直接传递进去啊,你可以都传null
    不过最好还是把按钮里的代码封装成函数,两个地方都调用同一个函数,而不是在timer里直接调用按钮的事件还有,时间判断,你应该在timer里进行判断,等真正执行,才执行函数里的代码
    否则即使时间不对,也实例化一个workreportform.WebReference.WebService对象出来
    用完又不释放,你也不怕内存爆炸了
      

  7.   

    Timer本身就是一个计时器,你可以设置它的Interval属性(毫秒),那么就会每个这么多毫秒,执行一次Tick事件里的代码。比如你的代码,现在就可以完成定时执行helloworld方法了(前提是你的Exe已经启动了)。二楼说的方法我想需要利用winform的启动参数了。
    首先修改你的WinForm程序的Program.cs//Program.cs
    namespace CallHelloworld{
        static class Program{
            static string wsReferenceArg = string.Empty;        [STAThread]
            static void Main(string[] args){ //注意此处,添加字符串数组参数
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                wsReferenceArg = args[0]; //Helloworld方法所需的参数值。
                Application.Run(new Form1(){StartupArg=wsReferenceArg});
            }
        }
    }
    //Form1.cs
    public class Form1:Form{
        private string _startupArg;
        public string StartupArg{
            set{_startupArg = value;}get{return _startupArg;}
        }    private void Form1_Load(object sender, EventArgs e){
            workreportform.WebReference.WebService a = new workreportform.WebReference.WebService();
            a.Helloworld(this.StartupArg);
        }
    }
    下面就是Windows任务了。这个你查一下资料就好了。
    假设你编译后的exe文件名叫:runatserver.exe
    那么在Windows定时任务中(以10:09分为例)D:\runatserver.exe "BT100"。注意runatserver.exe后面有空格。
      

  8.   


    我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。建议你现在本机进行测试。看能否发送报表,之后在部署到服务器中。
      

  9.   

    写个windows service不就行了么
      

  10.   


    runatserver.exe "BT100" 是什么意思啊?
      

  11.   


    我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。建议你现在本机进行测试。看能否发送报表,之后在部署到服务器中。
    本地现在不能调试,需要远程调试,我不能远程登录,需要权限的,
      

  12.   

    你只要确定服务器上a.HelloWorld("BT100");能执行,
    本机调试的时候,根本不需要真正的执行它
    你可以执行个别的看效果
      

  13.   


    现在在服务器上,  if (DateTime.Now.ToShortTimeString().ToString() == "10:09")
                    {
                        a.HelloWorld("BT100");
                        label1.Text = DateTime.Now.ToString();
                    }
    在10:09调试代码,整个系统可以运行,调试结果和预期也是一样地,但是在服务器上这个程序好像不能自动运行了,因为 作业 发出去的报表是旧的,应该没有调用helloworld()这个函数,想自动产生报表必须通过这个函数发送部门标号的,在服务器上自动调用这个函数是不是该把代码的 exe应用程序 通过windows任务 设置为启动项?
      

  14.   

    情况是这样地,这个系统会在每周一的晚上通过 sqlserver 里建的作业送报表,报表是通过调用数据库数据写入word模板的,而且是替换旧内容,现在报表也是可以发送的,发送是通过存储过程里的代码获取id,通过id可以获取邮箱,报表发送的都是8.24——8.30号的,出现问题后,最开始怀疑是不能往word里写数据,但在本地和服务器上调试都可以生成新报表,说明往word里写数据的代码没问题
      

  15.   

    那出现问题之后,首先应该去看你生成的文件,到底是新的还是旧的啊上面已经说清楚了,通过调用函数button1_Click(),传递参数,往word里写内容才能形成新文件,但是发现目录下文件一直是八月末的旧文件,所以确定没有新文件形成,这种情况有两种可能:
    (1)调用了函数button1_Click(),传递了参数(部门编号),但是调出来的数据没写进去。但是,在服务器上手动调试,可以写,形成文件,排除这种可能;
    (2)根本没有调用函数button1_Click(),在服务器上想自动调用这个函数,必须通过调用 private void timer1_Tick(),所以认为这出现问题
      

  16.   

    所以说,你先在本地测试,timer到底好用不好用啊
    而且,你在timer里调用click的事件有问题
    应该传入null,null,而不是sender,e
      

  17.   

    按钮好使,根本说明不了任何问题
    你得先确定timer好使,然后timer调按钮里的代码也好使
    建议还是封装成函数,按钮里和timer里都去调用函数,而不是timer事件调用按钮事件.
      

  18.   

    既然可以上网,为毛不去百度或谷歌一下呢,例子一大把。
    1)查一下windows计划任务
    2)C#定时器
      

  19.   

    timer就是一个线程,你sleep,start,abort,操作线程。