using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using IntelligentControlForsx.Service;
using IntelligentControlForsx.Service.ZM;
using IntelligentControlForsx.Service.ZM.Domain;
using log4net;
namespace IntelligentControlForsx.MyControls.zm.map
{
public partial class SBQ_Project1 : MapControl
{
private static ILog logger = LogManager.GetLogger("AppInfoLog");
///
/// 数据访问是否结束
///
private bool IsRefreshDataOver = true;
///
/// 绑定页面是否结束
///
private bool IsBindFormOver = true;
private NavService navSvc;
public SBQ_Project1()
{
InitializeComponent();
navSvc = NavService.Instance;
IsRefreshDataOver = false;
Thread t1 = new Thread(RefreshData);
t1.IsBackground = true;
t1.Start();
FormDataBind();
IsBindFormOver = false;
Thread t = new Thread(BindFormInvoke);
t.IsBackground = true;
t.Start();
}
public override void Active()
{
timer1.Enabled = true;
}
public override void DeActive()
{
timer1.Enabled = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (IsRefreshDataOver)
{
IsRefreshDataOver = false;
Thread t = new Thread(RefreshData);
t.IsBackground = true;
t.Start();
}
if (IsBindFormOver)
{
IsBindFormOver = false;
Thread t = new Thread(BindFormInvoke);
t.IsBackground = true;
t.Start();
}
}
private void RefreshData()
{
ZmWindturbineInfoSvc.GetInfo("SBQ_FDC", "SBQ01_GC");
IsRefreshDataOver = true;
}
public delegate void UpdateFormInfoDelegate();
public void BindFormInvoke()
{
UpdateFormInfoDelegate del = new UpdateFormInfoDelegate(FormDataBind);
if (this.InvokeRequired)
{
this.BeginInvoke(del, new object[] { });
}
else
{
FormDataBind();
}
IsBindFormOver = true;
}
private void FormDataBind()
{
try
{
if (!timer1.Enabled)
{
return;
}
ZmWindturbineInfo[] tmplist = new ZmWindturbineInfo[ZmWindturbineInfoSvc.infoList.Count];
ZmWindturbineInfoSvc.infoList.CopyTo(tmplist, 0);
IList list = tmplist.Where(s => s.ProjectId == "SBQ01_GC" && s.StationId == "SBQ_FDC").ToList();
for (int i = 0; i < list.Count; i++)
{
string controlName = "wf" + list[i].WindturbineId.Replace("SG01_", "");
Control ct = this.Controls.Find(controlName, true).FirstOrDefault();
if (ct != null)
{
try
{
if (ct is WindturbineInfoControl)
{
WindturbineInfoControl wc = (WindturbineInfoControl)ct;
wc.BindData(list[i].Power, list[i].WindSpeed, Convert.ToInt32(list[i].Status));
}
}
catch (Exception ex)
{
logger.Info("寻找控件或控件转换失败" + ex.Message);
}
}
}
}
catch { }
}
private void Windturbine_MyClick(object sender, EventArgs e)
{
try
{
WindturbineInfoControl icon = (WindturbineInfoControl)sender;
if (icon != null)
{
string windturbineId = "SG01_" + icon.WindturbineName.Replace("号", "").Trim();
navSvc.NavForWindturbine("pictureBoxParamters", windturbineId, "SBQ_FDC");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}