如果事實證明這是一個非常愚蠢的問題,但我剛剛開始強迫自己使用Entity Framework(我知道我還有很長的路要走),但我很抱歉,已經落在第一個障礙。Enitity Framework - Events問題
我正在編寫的程序僅僅是觀察一個PLC的真實情況。當它成爲true時,事件觸發,然後值(隨機)將被輸入到SQL中。然後我把這個位設置爲false。
我遇到的問題是事件觸發一次,條目被添加,位被設置爲false。但事件再也不會觸發。如果我註釋掉所有的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;
}
感謝
爲什麼你的OnBitChanged()是靜態的? – 2013-02-21 15:19:11
@Azhar因爲它是從靜態的Main()調用的?我真的很愚蠢嗎?我以爲我無法從靜態上下文中調用非靜態方法? – 2013-02-21 15:44:44
順便說一句,我嘗試創建一個非靜態的BitChangedHelper類,其中包含On_BitChanged中的代碼。於是我創建了一個新的BitChangedHelper,並調用了方法HandleBit(); – 2013-02-21 16:09:26