public ServiceController() { _sensor = new WiFiSensor(stopThread: _sensorStop, pauseThread: _sensorPause, playThread: _sensorPlay, output: _sensorOutputLocalizerInput); _localizer = new LocationLocalizer(stopThread: _localizerStop, pauseThread: _localizerPause, playThread: _localizerPlay, input: _sensorOutputLocalizerInput, algorithm: _localizationAlgorithm); _sensorState = ThreadState.Playing; _localizerState = ThreadState.Playing; _sensorThread = new Thread(new ThreadStart(_sensor.WiFiSensorLoop)); _localizerThread = new Thread(new ThreadStart(_localizer.LocationLocalizerLoop)); _sensorThread.IsBackground = true; _localizerThread.IsBackground = true; _sensorThread.Name = "WiFiSensorThread"; _localizerThread.Name = "LocationLocalizerThread"; }
public void WiFiSensorTest() { var stopThread = new AutoResetEvent(false); var pauseThread = new AutoResetEvent(false); var playThread = new AutoResetEvent(false); var wifiSensor = new WiFiSensor(stopThread: stopThread, pauseThread: pauseThread, playThread: playThread, output: new SensorToLocalizer<SensorOutput>()); var wifiDelegate = new ThreadStart(wifiSensor.WiFiSensorLoop); var wifiThread = new Thread(wifiDelegate); wifiThread.Start(); Log.Debug("Main Thread go to sleep"); Thread.Sleep(16000); Log.Debug("Main thread is awake"); Log.Debug("Pause WiFiSensor"); pauseThread.Set(); Log.Debug("Main Thread go to sleep"); Thread.Sleep(8000); Log.Debug("Main thread is awake"); Log.Debug("Restart WiFiSensor"); playThread.Set(); Log.Debug("Main Thread go to sleep"); Thread.Sleep(16000); Log.Debug("Main thread is awake"); Log.Debug("Stop WiFiSensor"); stopThread.Set(); Log.Debug("Wait for WiFiSensor"); wifiThread.Join(); Log.Debug("WiFiSensor has spontaneously terminated"); }