初始化
生产环境用 AI Studio 导出的 .darmodel + .darmkey 调用 AiSession.Open。明文 .onnx / .pdmodel 走 OpenPlain,同一推理路径,只跳过容器解码与验票。
打开
AiSession.Open()
public static AiSession Open(
string containerPath,
string? keyPath = null,
string? password = null,
string? preferProvider = null)
打开加密容器(.darmodel,DARM1)建会话。等价于 OpenEx(..., options: null)。
参数:
containerPath(string) —.darmodel路径(必填)keyPath(string?) —.darmkey授权文件;null= 走密码 / 试用通道password(string?) — 永久密码;null= 走授权文件 / 试用通道preferProvider(string?) — 指名 Provider;null= 按载荷 × 硬件 × 已装包自动选
返回值:
AiSession— 已打开的会话
keyPath 与 password 至少给一个;都给则 key 文件优先验票。指名 Provider 不可用(无硬件 / 驱动过旧 / 平台不支持)= fail-closed,绝不静默降级。对应包未装则内部调一次 AiRuntime.Ensure(无进度回调)。Windows 收到 rknn 载荷抛 AiUnsupportedPayloadException;在 Windows 上指名 edge-rknn 抛 AiUnsupportedPlatformException。
示例:
using var session = AiSession.Open("model.darmodel", keyPath: "model.darmkey");
AiSession.OpenPlain()
public static AiSession OpenPlain(string onnxPath, string? preferProvider = null)
打开明文模型建会话。与 Open 同一推理路径,只跳过容器解码与验票。等价于 OpenPlainEx(..., options: null)。
参数:
onnxPath(string) — 明文模型路径:.onnx;.pdmodel(同目录须有对应.pdiparams);或含*.pdmodel+*.pdiparams的目录preferProvider(string?) — 指名 Provider;null= 自动选
返回值:
AiSession— 已打开的会话
Paddle 是运行时载荷。.pt / .pth 仍拒,抛 AiUnsupportedPayloadException。
示例:
using var session = AiSession.OpenPlain("model.onnx");
AiSession.OpenEx()
public static AiSession OpenEx(
string containerPath,
string? keyPath = null,
string? password = null,
string? preferProvider = null,
SessionOptions? options = null)
打开加密容器并传入 SessionOptions(线程数 / CPU 亲和)。options 为 null = 等同 Open。
参数:
containerPath(string) —.darmodel路径(必填)keyPath(string?) —.darmkey授权文件password(string?) — 永久密码preferProvider(string?) — 指名 Provideroptions(SessionOptions?) — 会话选项;null= 自动线程、不设亲和
返回值:
AiSession— 已打开的会话
SessionOptions 只约束本会话推理线程池。禁止改 Windows ReservedCpuSets,禁止动 PLC 隔离核。native 缺 darra_session_open_ex 符号时抛 AiLoadException。
示例:
using var session = AiSession.OpenEx(
"model.darmodel",
keyPath: "model.darmkey",
options: new SessionOptions { IntraOpThreads = 2, InterOpThreads = 1 });
AiSession.OpenPlainEx()
public static AiSession OpenPlainEx(
string onnxPath,
string? preferProvider = null,
SessionOptions? options = null)
打开明文模型并传入会话选项。options 为 null = 等同 OpenPlain。
参数:
onnxPath(string) — 明文模型路径(语义同OpenPlain)preferProvider(string?) — 指名 Provideroptions(SessionOptions?) — 会话选项;null= 默认
返回值:
AiSession— 已打开的会话
示例:
using var session = AiSession.OpenPlainEx(
"model.pdmodel",
options: new SessionOptions { IntraOpThreads = 2 });
资源释放
Dispose()
public void Dispose()
关闭会话并释放全部资源(含解密明文窗口清零)。重复 Dispose 安全。实现 IDisposable,推荐 using。
Dispose / 析构禁止与任何在飞调用并发。close 后句柄失效,再用抛 ObjectDisposedException。不同会话可并发;同一会话的 InferImage 可并发,吞吐扩展推荐每线程一个会话。
示例:
using var session = AiSession.Open("model.darmodel", keyPath: "model.darmkey");