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.

125 lines
3.4 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 System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mesnac.Action.Base;
using System.Configuration;
namespace Mesnac.Action.Feeding.Qingquan.Sys
{
/// <summary>
/// 定时器运行服务类
/// </summary>
public class TimerRunService
{
#region 字段定义
private System.Timers.Timer _timer = null;
private int _cnt = 0; //计数器
#endregion
#region 单例实现
private static TimerRunService _instance = null;
private TimerRunService() { }
public static TimerRunService Instance
{
get
{
if (_instance == null)
{
_instance = new TimerRunService();
}
return _instance;
}
}
#endregion
#region 启动定时器运行服务
/// <summary>
/// 启动定时器运行服务
/// </summary>
public void Start()
{
if (this._timer == null)
{
this._timer = new System.Timers.Timer();
this._timer.Interval = 5000;
this._timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
this._timer.Start();
}
}
#endregion
#region 停止定时器运行服务
/// <summary>
/// 停止定时器运行服务
/// </summary>
public void Stop()
{
if (this._timer != null)
{
this._timer.Stop();
this._timer.Dispose();
this._timer = null;
}
}
#endregion
#region 定时器服务事件处理
/// <summary>
/// 定时器服务事件处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
lock (String.Empty)
{
this._cnt++;
SysVersionController.ProcessVersion(); //处理版本信息
#region 1、更新网络表中改设备的运行状态移到计时器服务类中
FeedingPlc.UpdateEquipState updateEquipStateInstance = new FeedingPlc.UpdateEquipState();
if (updateEquipStateInstance.NetType == Mesnac.Action.Base.BaseAction.NetTypes.Net)
{
updateEquipStateInstance.Run(null);
}
#endregion
#region 检测Socket是否在侦听如果没有侦听则重启侦听服务每5次循环检测一次端口占用
if (this._cnt > 5)
{
//每5次循环检测一次端口占用
int port = 3666;
object oPort = ConfigurationManager.AppSettings["Port"];
if (oPort != null)
{
int.TryParse(oPort.ToString(), out port);
}
if (!Mesnac.Basic.ProcessHelper.PortInUse(port))
{
Mesnac.Communication.TcpService.ReStartService(); //重新启动Socket侦听
}
this._cnt = 0;
}
#endregion
}
}
#endregion
}
}