怎么在服务器上让系统自动触发timer控件????

qq_21181709 2014-09-30 10:27:49
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace workreportform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

workreportform.WebReference.WebService a = new workreportform.WebReference.WebService();
if (DateTime.Now.ToString("dddd") == "星期二")
{
if (DateTime.Now.ToShortTimeString().ToString() == "10:09")
{
a.HelloWorld("BT100");
label1.Text = DateTime.Now.ToString();
}
if (DateTime.Now.ToShortTimeString().ToString() == "18:54")
{
a.HelloWorld("BO000");
}
if (DateTime.Now.ToShortTimeString().ToString() == "18:56")
{
a.HelloWorld("BS100");
}
if (DateTime.Now.ToShortTimeString().ToString() == "18:58")
{
a.HelloWorld("BD100");
}
if (DateTime.Now.ToShortTimeString().ToString() == "19:00")
{
a.HelloWorld("BA100");
}
if (DateTime.Now.ToShortTimeString().ToString() == "19:02")
{
a.HelloWorld("BF100");
}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
this.Hide();
button1_Click(sender, e);

}

private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
timer1.Interval = 100;
label1.Text = "lll";
}

private void Form1_Activated(object sender, EventArgs e)
{
this.Hide();
}
}
}
...全文
478 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 18 楼 wangyucai0915 的回复:
[quote=引用 14 楼 qq_21181709 的回复:] [quote=引用 12 楼 Z65443344 的回复:] 你要是完全不懂,就直接简单的说清楚你到底有什么需求 不要拿出个不完整的方案来让大家给你补充完整 你这个方案根本就需要推翻重来
我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。[/quote] 建议你现在本机进行测试。看能否发送报表,之后在部署到服务器中。 本地现在不能调试,需要远程调试,我不能远程登录,需要权限的,
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 17 楼 wangyucai0915 的回复:
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后面有空格。
runatserver.exe "BT100" 是什么意思啊?
kingredapple 2014-09-30
  • 打赏
  • 举报
回复
写个windows service不就行了么
Wang-Yucai 2014-09-30
  • 打赏
  • 举报
回复
引用 14 楼 qq_21181709 的回复:
[quote=引用 12 楼 Z65443344 的回复:] 你要是完全不懂,就直接简单的说清楚你到底有什么需求 不要拿出个不完整的方案来让大家给你补充完整 你这个方案根本就需要推翻重来
我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。[/quote] 建议你现在本机进行测试。看能否发送报表,之后在部署到服务器中。
Wang-Yucai 2014-09-30
  • 打赏
  • 举报
回复
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后面有空格。
於黾 2014-09-30
  • 打赏
  • 举报
回复
你先在自己机器上测试好了,再扔服务器上去. 逻辑根本性错误. 你机器上不能发报表,你可以把hello world函数换成messagebox.show之类的 时间上也可以缩短,看到底执行不执行. 你在timer里调用按钮事件,不能把timer的sender和e直接传递进去啊,你可以都传null 不过最好还是把按钮里的代码封装成函数,两个地方都调用同一个函数,而不是在timer里直接调用按钮的事件 还有,时间判断,你应该在timer里进行判断,等真正执行,才执行函数里的代码 否则即使时间不对,也实例化一个workreportform.WebReference.WebService对象出来 用完又不释放,你也不怕内存爆炸了
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
亲,这不是方案,这系统都用来好几个月了,出现问题了,现在让我解决,我才刚来一周
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 12 楼 Z65443344 的回复:
你要是完全不懂,就直接简单的说清楚你到底有什么需求 不要拿出个不完整的方案来让大家给你补充完整 你这个方案根本就需要推翻重来
我现在的需求就是让系统在每周一晚上自动往外发送一些报表。在服务器上人工调试,可以产生报表并发送,但是让其自动执行时,并没产生报表,所以认为是没有调用helloworld()函数。
E次奥 2014-09-30
  • 打赏
  • 举报
回复
把程序写入注册表,设置开机启动
於黾 2014-09-30
  • 打赏
  • 举报
回复
你要是完全不懂,就直接简单的说清楚你到底有什么需求 不要拿出个不完整的方案来让大家给你补充完整 你这个方案根本就需要推翻重来
threenewbee 2014-09-30
  • 打赏
  • 举报
回复
启动定时器的代码放在golbal.asax里面的Application_Start里面
於黾 2014-09-30
  • 打赏
  • 举报
回复
调用完了给谁看?在服务器上,根本没有人能看到.
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
"让系统自动触发timer控件" 拜托你有点基础行吗 timer控件是在你自己做的exe所在的进程里 你让系统触发它? 你到底想干什么,敢不敢说清楚,不要老拍脑袋想方案
亲,我是第一次接触这些,我现在就想在服务器上,自动调用hellloworld()这个函数
於黾 2014-09-30
  • 打赏
  • 举报
回复
"让系统自动触发timer控件" 拜托你有点基础行吗 timer控件是在你自己做的exe所在的进程里 你让系统触发它? 你到底想干什么,敢不敢说清楚,不要老拍脑袋想方案
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 6 楼 FoxDave 的回复:
[quote=引用 4 楼 qq_21181709 的回复:] [quote=引用 2 楼 FoxDave 的回复:] 自动触发timer控件? 把timer去掉放到计划任务里自动执行
我是新人,麻烦您说下计划任务是什么啊???[/quote] 服务器上有计划任务[/quote] 您是说去掉timer控件?那helloworld()就没法调用了呀!
Justin-Liu 2014-09-30
  • 打赏
  • 举报
回复
引用 4 楼 qq_21181709 的回复:
[quote=引用 2 楼 FoxDave 的回复:] 自动触发timer控件? 把timer去掉放到计划任务里自动执行
我是新人,麻烦您说下计划任务是什么啊???[/quote] 服务器上有计划任务
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 3 楼 lihui398 的回复:
2楼正解!
谢谢!!
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
引用 2 楼 FoxDave 的回复:
自动触发timer控件? 把timer去掉放到计划任务里自动执行
我是新人,麻烦您说下计划任务是什么啊???
Justin-Liu 2014-09-30
  • 打赏
  • 举报
回复
自动触发timer控件? 把timer去掉放到计划任务里自动执行
qq_21181709 2014-09-30
  • 打赏
  • 举报
回复
来人啊啊啊啊,大神帮帮忙吧
加载更多回复(12)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧