private ResponseText GetResponseValue(byte nodeNumber, string eventPath) { ResponseText returnValue = new ResponseText("ERR_TIMEOUT"); InterfacePropertyChangedEventHandler eventHandler = new InterfacePropertyChangedEventHandler((sender, property) => { if (property.EventData.Source == nodeNumber.ToString() && property.EventData.Property == eventPath) { returnValue = new ResponseText(property.EventData.Value.ToString()); } }); InterfacePropertyChanged += eventHandler; Thread t = new Thread(() => { int timeout = 0; int delay = 100; while (returnValue.ResponseValue == "ERR_TIMEOUT" && timeout < ZWaveMessage.SendMessageTimeoutMs / delay) { Thread.Sleep(delay); timeout++; } }); t.Start(); t.Join(ZWaveMessage.SendMessageTimeoutMs); InterfacePropertyChanged -= eventHandler; return(returnValue); }
private ResponseText GetResponseValue(byte nodeNumber, string eventPath) { ResponseText returnValue = new ResponseText("ERR_TIMEOUT"); InterfacePropertyChangedEventHandler eventHandler = new InterfacePropertyChangedEventHandler((sender, property) => { if (property.EventData.Source == nodeNumber.ToString() && property.EventData.Property == eventPath) { returnValue = new ResponseText(property.EventData.Value.ToString()); } }); InterfacePropertyChanged += eventHandler; Thread t = new Thread(() => { int timeout = 0; int delay = 100; while (returnValue.ResponseValue == "ERR_TIMEOUT" && timeout < ZWaveMessage.SendMessageTimeoutMs / delay) { Thread.Sleep(delay); timeout++; } }); t.Start(); t.Join(ZWaveMessage.SendMessageTimeoutMs); InterfacePropertyChanged -= eventHandler; return returnValue; }