private void UpdateData() { Dictionary <string, SkeletonAnalyzer> listS = _SkeletonAnalyzerContainer.getParameterList(); Dictionary <string, SkeletonAnalyzer> listS2 = _SkeletonAnalyzerContainer.getConstraintList(); if (threadTest && toogleSource && isActive) { Thread worker = new Thread(() => { threadTest = false; if (sourceParameterBool) { if (mode3D) { foreach (KeyValuePair <string, SkeletonAnalyzer> skeleton in listS) { _DeviceControl.updateAngleByParameter(skeleton.Key, (int)skeleton.Value.GetBodySegmentAngle3D(skeletonData)); } } else { foreach (KeyValuePair <string, SkeletonAnalyzer> constrainBySkeleton in listS) { _DeviceControl.updateAngleByParameter(constrainBySkeleton.Key, (int)constrainBySkeleton.Value.GetBodySegmentAngle2D(skeletonData)); } } } else { alreadyChanged = true; if (mode3D) { foreach (KeyValuePair <string, SkeletonAnalyzer> skeleton in listS2) { _DeviceControl.updateAngleByConstraints(skeleton.Key, -(int)skeleton.Value.GetBodySegmentAngle3D(skeletonData)); } } else { foreach (KeyValuePair <string, SkeletonAnalyzer> constrainBySkeleton in listS2) { _DeviceControl.updateAngleByConstraints(constrainBySkeleton.Key, (int)constrainBySkeleton.Value.GetBodySegmentAngle2D(skeletonData)); } } } threadTest = true; }); worker.Start(); } UpdateParams(); }