代码中的Status和State语义
State:用于描述某个对象的整体状态,是被描述对象的多个参数的载体,在将来,它将持久地承载这些参数,但这些参数的值可能改变。
例如:C#中 Begin/End
形式的异步方法中的 state
参数和 AsyncState
属性:
public class Socket : IDisposable
{
// ...
public IAsyncResult BeginAccept(AsyncCallback callback, object state);
// ...
}
public interface IAsyncResult
{
// ...
object AsyncState { get; }
// ...
}
Status:用于描述某个可分为多个阶段的持续过程所处的阶段,在将来,随着阶段的转变,这一状态可能会转变为其他状态。
例如:C#中 System.Threading.Tasks.Task
的 Status
属性:
public class Task : IThreadPoolWorkItem, IAsyncResult, IDisposable
{
// ...
public TaskStatus Status { get; }
// ...
}
public enum TaskStatus
{
Created = 0,
WaitingForActivation = 1,
WaitingToRun = 2,
Running = 3,
WaitingForChildrenToComplete = 4,
RanToCompletion = 5,
Canceled = 6,
Faulted = 7
}