我刚开始强迫自己使用实体框架(我知道我落后了很长一段路),但我已经陷入了第一个障碍。
我正在编写的程序只是观察 PLC 使其成为现实。当它变为真时,会触发一个事件,然后将值(目前是随机的)输入到 SQL 中。然后我将该位设置为假。
我遇到的问题是事件触发一次,条目被添加,并且位被设置为假。但是,该事件永远不会再次触发。如果我注释掉所有的 SQL 位然后只是将位设置为 false 那么它可以完美地工作并触发多次。
这是我拥有的大部分代码。
任何帮助将非常感激。
static void Main(string[] args)
{
PlcListener plcListener = new PlcListener();
plcLister.BitChanged += (bitVal) => On_BitChanged(bitVal, plcListener)
plcListner.Start();
}
private static void On_BitChanged(bool bitVal, PlcListener plcListner)
{
SqlEntities sqlEntity = new SqlEntities();
SampleData sampleData = new SampleData(){ Data = new Random().Next(); };
sqlEntity.AddToSampleDatas(sampleData);
sqlEntity.SaveChanges();
plcListener.Confirm();
}
public class PlcListener
{
public void Start()
{
OPCServer opcServer = new OPCServer();
opcServer.DataChanged += On_DataChanged;
}
public void Confirm()
{
//Code to set bit to false
}
public void On_DataChanged(bool bitVal.......)
{
if(bitVal)
{
BitChangedEventHandler handler = BitChanged;
if (handler != null)
{
handler(bitVal);
}
}
}
public delegate void BitChangedEventHandler(bool bitValue);
public event BitChangedEventHandler BitChanged;
}