I change source code for TemperatureHumidity module to work with Pins (I have Cerb40). The only change in code is constructor.
I experienced some really strange problem in calling event:
protected virtual void RaiseMeasurementCompleteEvent(object sender, double temperature, double relativeHumidity)
{
if (_OnMeasurementComplete == null)
_OnMeasurementComplete = new MeasurementCompleteEventHandler(RaiseMeasurementCompleteEvent);
if (Program.CheckAndInvoke(MeasurementComplete, _OnMeasurementComplete, sender, temperature, relativeHumidity)) //PROBLEM LINE
{
MeasurementComplete(sender, temperature, relativeHumidity);
}
}
CheckAndInvoke returns true and the event is called. But when I use Gadgeteer.Timer in Main method of Cerb40, the CheckAndInvoke returns false. Only when creating an object. It doesn’t have anything with adding Gadgeteer library to References.
public static void Main()
{
module = new TemperatureHumidityIO(Pin.PC0, Pin.PC1);
Gadgeteer.Timer timer;
timer = new Gadgeteer.Timer(new TimeSpan(0, 10, 0)); //WHEN NOT IN COMMENT, THE CheckAndInvoke RETURNS FALSE.
Thread.Sleep(Timeout.Infinite);
}
Can someone explain to me this behaviour please.
Do I have to change the event caller method, or not using Gadgeteer.Timer (only System.Threading.Timer)?