You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
5.9 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using log4net;
using SOA.Config;
using SOA.Objects;
using SOA.Registry;
using SOA.Schedule;
using SOA.Service;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
namespace SlabHandle
{
internal class Program
{
//日志记录
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static System.Timers.Timer Tm = new System.Timers.Timer(15000);
private static ConfigHandler config;
private static ServiceFactory serviceFactory = new ServiceFactory();
private static List<IAppService> appServiceContainer = new List<IAppService>();
[DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
//主程序
private static void Main(string[] args)
{
//#region 隐藏运行
//var currentProcess = System.Diagnostics.Process.GetCurrentProcess();
//Console.WriteLine(currentProcess.MainWindowTitle);
//IntPtr hWnd = currentProcess.MainWindowHandle;
//if (hWnd != IntPtr.Zero)
//{
// //Hide the window
// ShowWindow(hWnd, 0); // 0 = SW_HIDE
//}
//#endregion
logger.InfoFormat("验证授权...");
DateTime now = DateTime.Now;
logger.InfoFormat("SOA ServiceHost initializing");
config = (ConfigHandler)ConfigurationManager.GetSection("soa");
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
ServiceRepository.LoadServices(baseDirectory);
if (config.Objects.ElementInformation.IsPresent)
{
ObjectContainer objectContainer = new ObjectContainer(config);
}
ServiceRegistry.Initialize(config);
ServiceRegistry.Start();
if (config.Schedule.ElementInformation.IsPresent)
{
ScheduleService.Initialize(config);
ScheduleService.Start();
}
foreach (Protocol value in ServiceRepository.protocols.Values)
{
value.Start();
}
if (config.AppServiceConfigCollection.ElementInformation.IsPresent)
{
foreach (AppServiceConfigElement item2 in config.AppServiceConfigCollection)
{
IAppService appService = ObjectContainer.GetObject(item2.ObjectReference) as IAppService;
if (appService != null)
{
appServiceContainer.Add(appService);
}
}
}
foreach (IAppService item3 in appServiceContainer)
{
item3.Start();
logger.InfoFormat("Startup up service '{0}'", item3.ToString());
}
AppDomain.CurrentDomain.UnhandledException += UnhandledException;
logger.InfoFormat("SOA ServiceHost startuped");
string strSlabNo = string.Empty;
if (args.Count() > 0)
{
strSlabNo ="'" + args[0] + "'";
}
Environment.ExitCode = 0;//初始返回结果是0
try
{
if (SlabWidThkControler.reqBulkSlabSupersede(strSlabNo).code == "1")
{
Environment.ExitCode = 1;//处理成功
}
}
catch (Exception)
{
Environment.ExitCode = 2;//处理失败
}
//string strSlabNo = string.Empty;
//if (args.Count() > 1)
//{
// strSlabNo = args[1];
//}
//if (args.Length > 0)
//{
// if (args[0] == "C3")
// {
// SlabControler.reqBulkSlabSupersede(strSlabNo);
// }
// if (args[0] == "C2")
// {
// SlabControler.reqBulkSlabSupersede(strSlabNo);
// }
// if (args[0] == "C1")
// {
// SlabCoilControler.reqBulkSlabSupersede(Tm);
// }
//}
//else
//{
// SlabControler.reqBulkSlabSupersede(strSlabNo);
//}
//SurMatSubController.AddSurplusMaterial(null, Tm);
//Tm.Elapsed += new System.Timers.ElapsedEventHandler(TimeOut);//Timer线程执行的方法
//Tm.AutoReset = true; //设置是执行一次false还是一直执行(true)
//Tm.Enabled = true; //初始化是否可用
//Tm.Interval = 6 * 60000;//起始10秒
//logger.Info("Timer周期" + Tm.Interval);
//logger.Info("当前时间:" + DateTime.Now.ToString());
//Console.ReadLine();
}
private static void UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
logger.ErrorFormat("SOA ServiceHost unhandle exception: {0}", e.ExceptionObject);
}
public static void TimeOut(object source, System.Timers.ElapsedEventArgs e)
{
try
{
string strSql = string.Empty;
logger.Info("Timer周期" + Tm.Interval);
logger.Info("当前时间:" + DateTime.Now.ToString());
//SurMatSubController.AddSurplusMaterial(null, Tm);
}
catch (Exception ex)
{
logger.Error("******错误信息:" + ex.ToString());
}
}
}
}