WCF-流程编写IDEA

WCF-流程编写IDEA


WCF-工业自动化开源框架:https://blog.csdn.net/u014608071/article/details/106757607

WCF-矩阵IDEA:https://blog.csdn.net/u014608071/article/details/107031863

源码下载地址:https://github.com/jiliwei/WCF

 

运行介绍:

在运行的目录内有一个存放流程的文件夹:AutoScript

A共用参数.txt的内容

B模拟上料.txt的内容

C模拟飞达.txt的内容

D模拟取料.txt的内容

E模拟贴合.txt的内容

F模拟下料.txt的内容

 

开发相关:

使用到:C#脚本引擎 CS-Script,CS-Script是个开源的脚本引擎,许可证为MIT,MIT是相对宽松的软件授权条款。所有是可以使用的。

添加CS-Script,有两种方法:

  • VS2015+ 通过选中引用,鼠标右键“管理NuGet程序包”添加。

以上的步骤后等待下载并安装完成即可。这里说下,这样做是那个成功,但会引用很多个DLL,并且整个项目会增加200M到300M大小的相关文件。建议用个空项目这样添加好后再按照方法二来给正常使用的项目添加CS-Script;

  • 直接把CSScriptLibrary.dll复制到项目,然后引用。

代码相关:

  • using CSScriptLibrary;
  • 增加Panel控件命名为panelAsProcess
  • 创建加载的代码
TabControl tabCont = new TabControl();
string rootPath = Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。
string[] files = Directory.GetFiles(rootPath + "\\AutoScript", "*.txt");//读取指定文件夹的所有TXT文件
foreach (string itemFile in files)
{
    string strName = Path.GetFileNameWithoutExtension(itemFile);
    TabPage tpPage = new TabPage();//增加选项卡
    tpPage.Name = "tp" + strName;
    tpPage.Text = strName;
    tpPage.Dock = DockStyle.Fill;
    RichTextBox rtbPara = new RichTextBox();//增加编辑器
    rtbPara.Name = "rtb" + strName;
    rtbPara.Dock = DockStyle.Fill;
    StreamReader sr = new StreamReader(itemFile, Encoding.Default);
    rtbPara.Text = sr.ReadToEnd();//给编辑器添加内容
    sr.Close();
    tpPage.Controls.Add(rtbPara);
    tabCont.Controls.Add(tpPage);//子项添加到选项卡
}
tabCont.Name = "tcProcess";
tabCont.Dock = DockStyle.Fill;
panelAsProcess.Controls.Clear();
panelAsProcess.Controls.Add(tabCont);
  • 运行按钮的代码
if (lTask.Count <= 0)
{
    string scriptCode = "using System;\n" +
                        "using System.Windows.Forms;\n" +
                        "using WCF.WCFScript;\n" +
                        "public class AutoScript\n" +
                        "{\n";
    string rootPath = Directory.GetCurrentDirectory();
    string[] files = Directory.GetFiles(rootPath + "\\AutoScript", "*.txt");
    TabControl tabCont = (TabControl)panelAsProcess.Controls["tcProcess"];//获取到选项卡控件
    List<string> runNames = new List<string>();
    foreach (string itemFile in files)
    {
        string strName = Path.GetFileNameWithoutExtension(itemFile);
        TabPage tpCont = (TabPage)tabCont.Controls["tp" + strName];//获取到选项卡控件
        RichTextBox rtbCont = (RichTextBox)tpCont.Controls["rtb" + strName];//获取到选项卡控件
        scriptCode += rtbCont.Text;
        if (!strName.Contains("共用参数"))
        {
            runNames.Add(strName);
        }
    }
    scriptCode += "}";
    helper = new AsmHelper(CSScript.LoadCode(scriptCode, null, false));
    foreach (string item in runNames)
    {
        Thread thread = new Thread(new ParameterizedThreadStart(workRun));
        thread.Start((object)item);
        lTask.Add(thread);
    }
    btnAsRun.Text = "结束";
}
else
{
    foreach (Thread item in lTask) { item.Abort(); }
    lTask.Clear();
    btnAsRun.Text = "运行";
}
public void workRun(object runName)
{
//应该是cs-script的异常,设置为不出异常才能启动另一个线程才能每次都能启动成功
//否则出现异常的概率会很大
autoRestart:
    try
    {
        helper.Invoke("AutoScript." + runName.ToString());
    }
    catch (Exception e)
    {
        goto autoRestart;
    }
}

具体代码可以下载源码查看自定义控件WCFAutoScript.cs的代码

下载地址:https://github.com/jiliwei/WCF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值