# ObjectSolutionState class

Namespace: [Grasshopper2.Doc](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.doc.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public sealed class ObjectSolutionState
```

An immutable, thread-safe class aggregating all fields relevant to object solutions.

## Properties

- [CurrentId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/currentid.md): Gets the solution id associated with the currently available [ObjectSolutionState.Data](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/data.md).
- [Data](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/data.md): Gets the result computed by the most recent successful solution. This can be null.
- [FaultException](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/faultexception.md): Gets the exception which caused a faulted phase. This will be null whenever the [ObjectSolutionState.Phase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/phase.md) is not [Phase.Faulted](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.phase.md).
- [Initial](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/initial.md): (static) Create the initial state assigned to active objects at construction.
- [Irrelevant](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/irrelevant.md): (static) Create an irrelevant state which is assigned to non-active objects at construction.
- [Phase](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/phase.md): Gets the phase of this state.
- [ProcessId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/processid.md): Gets the [SolutionId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.solutionid.md) of the currently computing solution, or the cancelled/faulted solution.
- [RelevantId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/relevantid.md): Gets either the [ObjectSolutionState.ProcessId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/processid.md) if it is valid, or the [ObjectSolutionState.CurrentId](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/currentid.md) if it is not.

## Methods

- [Cancel](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/cancel.md): Move this state into the Cancelled phase.
- [Complete](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/complete.md): Move this state into the Completed phase.
- [Compute](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/compute.md): Move this state into the Computing phase. If the awaitingTask has finished (Faulted, Cancelled, or RanToCompletion), then this method will return instead of a modified state.
- [Expire](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/expire.md): Move this state into the Expired phase.
- [Fault](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/fault.md): Move this state into the Faulted phase.
- [ToString](https://developer.rhino3d.com/api/gh2/type/grasshopper2.doc.objectsolutionstate/tostring.md)
