2.3 插件开发基准: 接口的定义 - DavidSciMeow/DGLab_Coyote_CSharp_Library GitHub Wiki

1. 接口定义 (源文件定义)

    [InheritedExport]
    public interface IPlugin
    {
        //会被显示在插件列表的名称
        public string Name { get; } 
        //会显示在插件列表的描述(可空)
        public string? Description { get; } 
        //用户可调的设置
        public Dictionary<string, string> Settings { get; } 
        //用户点击启用插件的回调, CoyoteDeviceV3是用户当前连接的郊狼实例
        //CancellationToken是任务线程的取消标, 如果有阻塞语句, 建议传递
        public void Init(CoyoteDeviceV3 dev, CancellationToken ctl); 
        //用户点击停止插件的回调, CoyoteDeviceV3是用户当前连接的郊狼实例
        //CancellationToken是任务线程的取消标, 如果有阻塞语句, 建议传递
        public void Stop(CoyoteDeviceV3 dev, CancellationToken ctl); 
    }

2. 设置界面的内容

在设置Settings里面的Key会被显示成窗体设置内的提示词, Value是窗体内的控件值. 若有默认在用户点击设置的时候会自动输入值, 当输入窗口被关闭或者失焦的时候, 数据便会更新回Settings.

例如如此设置的Settings字典:

T(J(F%EYG)QN%{O%SD47 AP

会产生如下的窗口:

OVQL}YI2WVYE}AAQIBRP9BE

3. 建议实现方案

若需要实现While(true)模式或者阻塞模式, 建议如下实现:

while (true)
{
    if (ctl.IsCancellationRequested) return;
    
    //.....


    try
    {
        Task.Delay(500, ctl).Wait(ctl);
    }
    catch
    {

    }
}