Controller.Tasks 任务与 OneScript
通过 Controller.Tasks 访问任务集合,每个任务包含一个 OneScriptEngine 实例用于加载和运行 OneScript(Lua)程序。
TaskId 枚举
| 枚举值 |
说明 |
TLibrary |
库任务(索引 0) |
T01 ~ T31 |
用户任务 1~31 |
TasksCollection
| 属性/方法 |
类型 |
说明 |
[TaskId] |
Task |
按任务 ID 获取任务实例 |
Count |
int |
可用任务数量 |
StopPrograms(timeout) |
void |
停止所有任务 |
StopPrograms(taskIds, timeout) |
void |
停止指定任务 |
Task
Task 包含以下属性:
| 属性 |
类型 |
说明 |
Name |
TaskId |
任务标识符 |
OneScript |
OneScriptEngine |
OneScript 脚本引擎实例 |
OneScriptEngine
OneScriptStatus
| 属性 |
类型 |
说明 |
State |
OneScriptState |
当前状态 |
CurrentLine |
int |
当前执行行号 |
ErrorCode |
int |
错误码(0 表示无错) |
ErrorMessage |
string |
错误消息 |
IsRunning |
bool |
是否正在运行 |
IsPaused |
bool |
是否已暂停 |
IsCompleted |
bool |
是否已完成 |
HasError |
bool |
是否有错误 |
OneScriptState 枚举
| 枚举值 |
说明 |
Idle |
空闲(未加载) |
Ready |
就绪(已加载等待运行) |
Running |
运行中 |
Paused |
已暂停 |
Completed |
已完成 |
Error |
出错 |
Stopping |
正在停止 |
OneScriptValidationResult
| 属性 |
类型 |
说明 |
Succeeded |
bool |
验证是否通过 |
Errors |
IReadOnlyList<OneScriptValidationError> |
错误列表 |
RawErrors |
string |
原始错误 JSON |
程序监控示例
以下代码演示典型的 ProgramMonitor 模式:加载脚本、运行、轮询状态直到完成:
var script = controller.Tasks[TaskId.T02].OneScript;
script.Load(@"..\..\..\OneScripts\programflow.pgm");
script.Run();
while (true)
{
script.RefreshStatus();
OneScriptStatus status = script.Status;
Console.WriteLine($"State: {status.State,-10} Line: {status.CurrentLine}");
if (status.IsCompleted || status.HasError || status.State == OneScriptState.Idle)
break;
Thread.Sleep(200);
}
if (script.Status.HasError)
{
Console.WriteLine($"Error {script.Status.ErrorCode}: {script.Status.ErrorMessage}");
script.Stop();
}
if (!string.IsNullOrEmpty(script.PendingOutput))
{
Console.WriteLine("Program output:");
Console.WriteLine(script.PendingOutput);
}
相关页面