using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using HH.WCS.Mobox3.Template.Procss;
using HH.WCS.Mobox3.Template.Util.EquipmentCommunication;
using HH.WCS.Mobox3.Template.Util.Helper;
using Microsoft.Owin.Hosting;
using Topshelf;
namespace HH.WCS.Mobox3.Template
{
///
///
///
internal class Program
{
///
///
///
///
static void Main(string[] args)
{
Settings.Init();
//1.0 开启api
Startup();
//2.0 开启tcp
StartTcp();
//3.0 开启线程
var rc = HostFactory.Run(x => {
x.Service(s => {
s.ConstructUsing(name => new WorkThread());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("hh123");
x.SetDisplayName("hh123.wms");
x.SetServiceName("hh123.wms");
});
var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
Environment.ExitCode = exitCode;
}
///
///
///
private static void Startup()
{
Console.WriteLine("Startup ApiController");
Task.Run(() =>
{
//var url = "http://192.168.1.87:8901";//{SettingHelper.port}
var url = $"http://+:{Settings.port}";//
Console.WriteLine(url);
using (WebApp.Start(url))
{
Console.WriteLine("Running on {0}", url);
Console.ReadLine();
}
});
}
///
///
///
private static void StartTcp()
{
//new TcpServer("192.168.1.87");
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList) {
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
Console.WriteLine($"ip= {ip}");
new TcpServer(ip.ToString());
}
}
}
///
///
///
private class WorkThread
{
///
///
///
public void Start()
{
List tasks = new List
{
// 线体数据
GetTask(ThreadTask.ReadLines),
};
Task.WaitAll(tasks.ToArray());
}
///
///
///
public void Stop()
{
Console.WriteLine("work stopped");
}
///
///
///
///
///
private Task GetTask(Action action)
{
var task = Task.Run(() =>
{
while (true)
{
try
{
action();
}
catch (Exception ex)
{
LogHelper.Error(ex.Message, ex);
}
Thread.Sleep(4000);
}
});
return task;
}
}
}
}