Wisdom.CommonUtil.StateMachine
1.0.1
dotnet add package Wisdom.CommonUtil.StateMachine --version 1.0.1
NuGet\Install-Package Wisdom.CommonUtil.StateMachine -Version 1.0.1
<PackageReference Include="Wisdom.CommonUtil.StateMachine" Version="1.0.1" />
<PackageVersion Include="Wisdom.CommonUtil.StateMachine" Version="1.0.1" />
<PackageReference Include="Wisdom.CommonUtil.StateMachine" />
paket add Wisdom.CommonUtil.StateMachine --version 1.0.1
#r "nuget: Wisdom.CommonUtil.StateMachine, 1.0.1"
#:package Wisdom.CommonUtil.StateMachine@1.0.1
#addin nuget:?package=Wisdom.CommonUtil.StateMachine&version=1.0.1
#tool nuget:?package=Wisdom.CommonUtil.StateMachine&version=1.0.1
Wisdom.CommonUtil.StateMachine
基于 Stateless 的线程安全状态机基类,封装状态查询、异步触发与变更通知,并兼容不同 Stateless 版本的流转回调差异。适用于检测流程、设备工况等业务状态管理。支持 netstandard2.0、net48、net8.0-windows。
功能概览
| 类型 | 说明 |
|---|---|
ThreadSafeStateMachine<TState, TTrigger> |
抽象基类:State / CanFire / FireAsync / OnStateChanged |
子类在构造中调用 Configure() 配置 Stateless 规则(Permit、Ignore、OnEntry 等)。
目标框架
netstandard2.0net48net8.0-windows
依赖
| 包 | 用途 |
|---|---|
| Stateless | 状态机引擎 |
快速开始
public enum S { Idle, Running, Done }
public enum T { Start, Finish }
public sealed class MySm : ThreadSafeStateMachine<S, T>
{
public MySm() : base(S.Idle)
{
Configure()
.Permit(T.Start, S.Running);
Configure(S.Running)
.Permit(T.Finish, S.Done);
}
}
var sm = new MySm();
sm.OnStateChanged += (from, to) => { /* UI / 日志 */ };
await sm.FireAsync(T.Start);
典型场景
- 单表/多表检测流程状态
- 电源升源、稳压、关源等设备工况
- 需要线程安全触发的 UI 驱动流程
安装
NuGet(推荐)
Visual Studio「管理 NuGet 程序包」中添加源后搜索安装,或使用 CLI:
dotnet add package Wisdom.CommonUtil.StateMachine --source wisdom-commonlibrary
NuGet 源:
https://nuget.cnb.cool/Wisdom-ProductTestingDepartment/CommonLibrary/-/packages/v3/index.json
源码(git submodule)
本仓库作为主工程 CommonLibrary/Wisdom.CommonUtil.StateMachine 子模块维护。修改后推送 Tag(如 v1.2.3)触发 CNB CI 自动打包发布。
发布
git tag v1.2.3
git push origin v1.2.3
CI 仅在 v* Tag 推送时执行 dotnet pack / dotnet nuget push,包版本取自 Tag(去掉前缀 v)。
仓库与制品
许可证
内部使用组件,版权归属 烟台东方威思顿电气有限公司(威思顿检测产品部)。未经授权请勿对外分发。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net8.0-windows7.0 is compatible. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|
1.0.1:补充完整 README、NuGet 元数据与 WSD 包图标;Tag 触发自动发布。