using System; using System.IO; using System.Net; using System.Text; using System.Threading; using System.Timers; using Topshelf; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Topshelf.HostFactory.Run(Handler); } /// <summary> /// 部署说明 /// 1发布成自包含类库方式 /// 2使用管理员运行Dos命令行 /// 3完整exe路径 install(安装) uninstall(卸载) /// 4去到服务找到对应的服务进行启动 /// </summary> /// <param name="cfg"></param> static void Handler(Topshelf.HostConfigurators.HostConfigurator cfg) { cfg.Service<MyServiceMethod>(x => { // 指定服务类型。这里设置为 MKAutoDataService x.ConstructUsing(name => new MyServiceMethod()); // 当服务启动后执行的方法 x.WhenStarted(tc => tc.Start()); // 当服务停止后执行的方法 x.WhenStopped(tc => tc.Stop()); }); // 服务用本地系统账号来运行 cfg.RunAsLocalSystem(); // 服务描述信息 cfg.SetDescription("ZZ Send Get"); // 服务显示名称 cfg.SetDisplayName("ZZ Send Get"); //服务名称 cfg.SetServiceName("ZZ Send Get"); } } public class MyServiceMethod { System.Timers.Timer t; int count = 0; public void Start() { t = new System.Timers.Timer(3 * 1000); //实例化Timer类,设置间隔时间为10000毫秒 t.Elapsed += new System.Timers.ElapsedEventHandler(AutoSendGet); //到达时间的时候执行事件 t.AutoReset = true; //设置是执行一次(false)还是一直执行(true) t.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件 t.Start(); //采用该方式,如果把时间间隔设置得太长(如1分钟),程序执行一次就不继续执行了 //Thread tAutoData = new Thread(AutoData); //tAutoData.Start(); } private void AutoSendGet(object sender, ElapsedEventArgs e) { //while (true) //{ string url = "https://www.baidu.com/s?ie=utf-8&mod=rsv_pq=a6a4e06800086c8e&rsv_t=b8a8fvuBj14VOFtRCP2AcY8KugmX9Bp4MUU%2FWiko2QFvY%2B00MjCZSgTwncs&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&bs=%E8%88%AA%E5%A4%A9%E5%8D%8E%E6%8B%93%E7%89%9B%E9%80%BC&rsv_sid=undefined&_ss=1&clist=d159b230be3ad807&hsug=&f4s=1&csor=6&_cr1=36807"; int statusCode = 0; string res = GetHttpResponse(url, 6000, out statusCode); if (res != null) { count++; Console.WriteLine("count:" + count + ",statusCode:" + statusCode); //T mes = JsonHelper.DeserializeJsonToObject<T>(res) } // Thread.Sleep(2 * 1000); //} } public void Stop() { t.Stop(); } public static string GetHttpResponse(string url, int Timeout, out int statusCode) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.UserAgent = null; request.Timeout = Timeout; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); statusCode = (int)response.StatusCode; StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } } }