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; } } }