Example #1
0
        private async Task ObservableStateAsync(object state)
        {
            await Task.Run(async() =>
            {
                Ping ping       = new Ping();
                PingReply reply = await ping.SendPingAsync(IPAddress.Parse(_mxioContext.Client.BaseUrl.Host));

                if (reply.Status != IPStatus.Success)
                {
                    return;
                }

                DigitalInputCollection digitalInputs = default;

                try
                {
                    digitalInputs = await this.GetAsync();
                }
                finally { }


                if (_lastdigitalInputs == null)
                {
                    _lastdigitalInputs = digitalInputs;
                    return;
                }

                var differentDigitalInputs = digitalInputs.Where(t => _lastdigitalInputs.FirstOrDefault(k => k.Index == t.Index).Status != t.Status);

                if (differentDigitalInputs.Count() != 0)
                {
                    OnChanged?.Invoke(this, digitalInputs);
                }

                _lastdigitalInputs = digitalInputs;
            });
        }