The Case entity in CRM, has an associated entity called Case Resolution (incidentresolution). When a case was opened and then completed with a resolution, the closure of the case will be via the Incident Resolution Entity, as shown in the code below.
IncidentResolution resolution = new IncidentResolution
Subject = "Resolved Sample Incident",
IncidentId = new EntityReference(Incident.EntityLogicalName, _incidentId)
// Close the incident with the resolution.
CloseIncidentRequest request = new CloseIncidentRequest
IncidentResolution = incidentResolution,
Status = new OptionSetValue((int)incident_statuscode.ProblemSolved)
CloseIncidentResponse closeResponse = (CloseIncidentResponse)service.Execute(closeIncidentRequest);
However, when an incident as cancelled, there is no resolution, so the closure of the incident happens directly within the Case entity, and there is no need for a closure. See the code below to notice the difference.
SetStateIncidentRequest request = new SetStateIncidentRequest()
IncidentState = new OptionSetValue(2), // Cancelled
IncidentStatus = new OptionSetValue(6), // Cancelled
EntityId = new EntityReference("incident", incidentId)