[netMarketing类库] asynOperation类: 异步执行函数

命名空间:thread.asynOperation

功能:异步执行函数


功能详细说明:

在执行多个轴同时回原点时,你需要的是多个轴并行回原点,而不是一个个排队回原点。

你当然可以使用线程去实现,但是比较麻烦,不推荐这样做。

勇哥推荐的是使用asynOperation类来异步执行回原点函数。

这个类的功能需要你并行运行的函数确保一定是可以正常执行完成,而且你不需要中途停止的场合。


缺点:

这个类使用Begininvoke实现异步操作,它的缺点是当并行处理的函数没有执行完毕前是不能提前强制结束的。所以不要把asynOperation类用于机器动作逻辑中去,那样你会发现当需要这个动作复位时,你却无法做到让这个并行处理线程结束掉。


常用函数列表


由函数列表可知,要异步执行的函数必须是无参的有一个返回bool值的函数。

如果你要传入参数,可以通过把你的工作函数二次封装成一个不带参函数的办法间接实现。

//压入函数到并行处理列表,注意压入的函数必须是无参数,并且只有一个bool返回值
public void FuncListAdd(Func<bool> action)
//异步执行并行函数列表中的函数,其返回值表示是否成功执行了列表中的全部函数。
public bool AsynFunList()
//异步执行一个函数
public bool AsynFun(Func<bool> action)



参考例子:


using netMarketing.thread;
using sharClass;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace asynOperationTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnEnter_Click(object sender, EventArgs e)
        {
            var ao = new asynOperation();
            ao.FuncListAdd(fun1);
            ao.FuncListAdd(fun2);
            var f1 = ao.AsynFunList();
            this.rtbmsg.AppendText(Environment.NewLine+ f1.ToString());
        }

        private bool fun1()
        {
            uiHelper.SetTextString(this.rtbmsg, $"{DateTime.Now.ToString()}: 线程1{Environment.NewLine}",Color.Red);
            return true;
        }

        private bool fun2()
        {
            uiHelper.SetTextString(this.rtbmsg, $"{DateTime.Now.ToString()}: 线程2{Environment.NewLine}", Color.Green);
            return true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            new asynOperation().AsynFun(fun1);
        }
    }
}


点击“异步列表”按钮后,把函数fun1,fun2推入异步列表然后同步执行。

点击“单个异步”按钮后,把一个函数fun1进行异步执行。


image.png


--------------------- 

作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

返回类库功能说明目录



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864