using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity.Log4NetConfig; using DllEapDal; using DllEapEntity; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; using SharpCifs.Util.Sharpen; using System; using System.Linq; using System.Text; using System.Threading.Tasks; namespace EapAsyncForLinux { class Program { static void Main(string[] args) { Console.OutputEncoding = Encoding.Default; Console.WriteLine("开始执行"); var builder = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); IConfigurationSection dbSection = builder.GetSection("eap"); var conn = dbSection.GetValue("ConnectionStrings"); var timeSpan = builder.GetValue("timespan"); // var conn = "Server=127.0.0.1;Port=3306;Database=eap;Uid=root;Pwd=zhangxize;Charset=utf8;"; Task.Run(() => { while (true) { LogHelper.LogFatal("开始处理汇总失败记录---------", "EapAsync", string.Empty); string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql)) { var dal = new McaEventStatisticByDayDal(db); dal.AsyncFails(conn, DatabaseType.MySql, ref errorinfo); } Thread.Sleep(1000 * 60 * 23); } }); while (true) { Task.Run(() => { IDatabase eapdb = null; var history = new EapAsyncHistory() { AsyncTime = DateTime.Now, IsSuccess = 1, Remark = string.Empty }; try { eapdb = DbFactory.Base(conn, DatabaseType.MySql); eapdb.BeginTrans(); var dal = new McaEventStatisticByDayDal(eapdb); string error = string.Empty; if (dal.Async(DateTime.Now, ref error) < 0) { eapdb.Rollback(); LogHelper.LogError(error, "EapAsync", string.Empty); history.IsSuccess = -1; history.Remark = error; InsertHistory(history); return; } eapdb.Commit(); InsertHistory(history); LogHelper.LogError("汇总成功", "EapAsync", string.Empty); } catch (Exception e) { if (eapdb != null) eapdb.Rollback(); LogHelper.LogError(e.Message, "EapAsync", string.Empty); LogHelper.LogError(e.StackTrace, "EapAsync", string.Empty); history.IsSuccess = -1; history.Remark = e.Message; InsertHistory(history); } finally { if (eapdb != null) { eapdb.Close(); eapdb.Dispose(); } } }); Thread.Sleep(timeSpan * 60 * 1000); } } static void InsertHistory(EapAsyncHistory history) { var builder = new ConfigurationBuilder() .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) .Build(); IConfigurationSection dbSection = builder.GetSection("eap"); var conn = dbSection.GetValue("ConnectionStrings"); using (IDatabase db = DbFactory.Base(conn, DatabaseType.MySql)) { var dal = new EapAsyncHistoryDal(db); string errorinfo = string.Empty; if (dal.Insert(history, ref errorinfo) < 0) { LogHelper.LogError("新增汇总历史记录失败", "EapAsync", string.Empty); } } } } }