public async Task Start() { try { if (_started) { throw new Exception("Device already started."); } await _deviceClient.OpenAsync(); _started = true; DeviceStarted?.Invoke(DeviceId, HostName); if (!_initialized) { IotDeviceMethod[] methods = GetNamedMethods(); foreach (IotDeviceMethod method in methods) { _deviceClient.SetMethodHandlerAsync(method.Name, method.Callback, method.Context).Wait(); } _initialized = true; } } catch (Exception exc) { int x = 0; } }
private void Worker() { do { List <Device> devices = null; lock (_lock) { devices = queue.ToList(); } if (devices != null && devices.Count > 0) { var device = devices[0]; device.Start(); DeviceStarted?.Invoke(device); // Remove from queue lock (_lock) queue.RemoveAll(o => o.DeviceId == device.DeviceId); } } while (!stop.WaitOne(Delay, true)); }