It looks like you're using the generated proxies to do your work, and your coding would be simplified by using the EWS Managed API (EWSMA). To mark a task as complete in EWSMA, just use the following code.
// Bind to the existing task by using the ItemId.
// This method call results in a GetItem call to EWS.
Task task = Task.Bind(service, itemId);
// Update the Status of the task.
task.Status = TaskStatus.Completed;
// Save the updated task.
// This method call results in an UpdateItem call to EWS.
task.Update(ConflictResolutionMode.AlwaysOverwrite);
Then to uncomplete it, change the following line.
task.Status = TaskStatus.NotStarted;
I've run this and checked the output in Outlook. The first chunk of code marks the task and complete with strikethrough in Outlook, and the second removes the strikethrough and the complete checkmark.
For more information about using EWSMA, see Get started with EWS Managed API client applications.