Quicker的运行C#代码步骤提供了高度自定义的逻辑处理。
C#代码初次运行前需要编译,这个过程是阻塞的,有时需要消耗较长时间;初次运行之后编译结果会被缓存,之后运行就会使用缓存的内容,无需等待编译。
这个特点使得使用C#代码的动作初次运行时会在相应步骤卡一下,有时候会影响使用体验。
目前无法获知程序集是否缓存的办法,运行前也不知道是否需要等待编译,因此无法直接向用户发出“需要等待编译”的提示。
这里提供一种在编译C#代码时提供用户提示的方案:
- 在C#代码主程序开头添加
if(!(bool)context.GetVarValue("isSuccess")) return;,并将是否成功的结果写入isSuccess变量。 - 使用一个多线程步骤组包裹该步骤,并加入一个与编译并行的步骤组,内容为等待超时后判断编译是否完成(
isSuccess为true),未完成则提示正在编译的消息
一般来说,一旦编译完成,return退出的速度会很快,等待超时可以比较短(实际取决于设备)。
using System.Windows.Forms;
public static void Exec(Quicker.Public.IStepContext context)
{
if(!(bool)context.GetVarValue("isSuccess")) return;
MessageBox.Show("Hello world!");
}

之后再调用相同的运行C#代码步骤,由于isSuccess为true,就会利用之前缓存的编译结果运行后面的业务逻辑。
感谢@Anlv提供的相关建议。
京公网安备 11010502053266号