void _trainBW_DoWork(object sender, DoWorkEventArgs e) { if (e == null) { return; } var arg = e.Argument as Object[]; var name = arg[0] as String; var image = arg[1] as Bitmap; var imgName = Guid.NewGuid() + "kin.jpg"; var detectionResult = _faceRest.faces_detect(null, imgName, null, "", image); var tags = detectionResult.photos[0].tags; var tagList = new List <string>(); if (tags == null || tags.Count != 1) { e.Cancel = true; return; } var tag = tags[0]; if (tag.attributes["face"].confidence < 80) { e.Cancel = true; return; } tagList.Add(tag.tid); if (!_users.Contains(name + "@" + _namespace[0])) { _users.Add(name + "@" + _namespace[0]); } _faceRest.tags_save(tagList, name + "@" + _namespace[0], "", "kinectHome"); var trainRes = _faceRest.faces_train(new List <string> { name }, _namespace[0], string.Empty); var result = new object[2]; result[0] = image; result[1] = detectionResult; e.Result = result; var trainStatus = _faceRest.faces_status(_users, _namespace[0]); }