net4.0 task 超时任务代码 用Thread.sleep方式实现

摘要:
使用系统;使用System.Collections。通用的使用系统。组件模型;使用系统。数据使用系统。绘画使用系统。Linq;使用系统。文本使用System.Windows。形式;使用系统。穿线;使用Syste
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
namespace WindowsFormsApplication2
{   delegate void invokeDelegate();
    public partial class Form1 : Form
    {
        CancellationTokenSource ts = new CancellationTokenSource();

        public Form1()
        {
            InitializeComponent();


        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "AAA");
            var invokeThread = new Thread(new ThreadStart(StartMethod));
            invokeThread.Start();
            string a = string.Empty;
            for (int i = 0; i < 5; i++)      //调整循环次数,看的会更清楚
            {
                Thread.Sleep(1000);
                a = a + "B";
            }
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + a);
        }

        private void StartMethod()
        {
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "CCC");
            button1.Invoke(new invokeDelegate(invokeMethod));
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "DDD");
        }

        private void invokeMethod()
        {
            Thread.Sleep(3000);
            MessageBox.Show(Thread.CurrentThread.GetHashCode().ToString() + "EEE");
        }


        private void lableeeidt(string text)
        {
    
            
            if (label1.InvokeRequired)
            {
                label1.Invoke(new Action<string>(lableeeidt),text);
            }
            label1.Text = text;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        
        private void button2_Click(object sender, EventArgs e)
        {
            Task task = new Task(() =>
            {  int i=0;
                while (!ts.IsCancellationRequested)
                {  i++;
                    lableeeidt(i.ToString());
                    Thread.Sleep(1000);

                }


            },ts.Token);

            task.Start();
            //新开一个task任务,里面用sleep实现超时
            Task.Factory.StartNew(() =>
            {
                Thread.Sleep(4500);
                ts.Cancel();
            });
       
            
           
        }
    }
}

在.Net 4.5中,该操作得到了进一步的简化,我们可以通过在创建CancellationTokenSource时设置超时来实现这一功能。

var cancelTokenSource = newCancellationTokenSource(3000);

除此之外,也可以通过如下代码实现同样的效果。

cancelTokenSource.CancelAfter(3000);

免责声明:文章转载自《net4.0 task 超时任务代码 用Thread.sleep方式实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇地图标注优化之zencart第一时间修改原始内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

crontab命令加载和使用

crontab命令用于设置定期执行的指令。在Linux系统中,Linux任务调度的任务主要分为以下两类:1.系统周期性执行的任务,如备份系统数据和清理缓存。2.个人要执行的任务:用户要定期执行的任务,例如每10分钟检查邮件服务器是否有新消息。这些任务可以由每个用户设置,以检查是否首先安装了crontab[root@localhostgjw]#rpm qa|g...

索引节点(inode)爆满问题处理

后来,我用df-I检查/data分区的索引节点,发现它已满,这导致系统无法创建新的目录和文件。inode是用于存储这些数据的信息,包括文件大小、所有者、用户组、读写权限等。inode索引每个文件的信息,因此它具有inode的值。根据指令,操作系统可以通过inode值最快找到对应的文件。故障排除的原因是/data/cache目录中有大量小字节缓存文件,这些文件...

【转载】SecureCRT配色推荐和永久设置

2.配置文件夹和其他颜色选项==“全局选项==”终端==“外观==”ANSI颜色单击第二行中的第五个色块以修改文件夹颜色:对第二个色块执行相同的操作以修改压缩包和jar包的颜色:如果设置后文件夹和其他的颜色无效,您可以对第二行中设置背景色和字体颜色的颜色块执行相同的操作!...

移动通信网络中的 GTP 协议

在EPSUP中使用GTP的优点之一是GTP具有固有的可识别隧道机制和GTP可以为UE提供的移动性。注意:GTPv2-U协议不存在。GTP-C协议GTP-C是GTP的控制平面,使用UDP端口2123。在EPS中,GTPv2-C协议负责创建、维护和删除S1、S5/S8和其他接口上的GTP-U隧道。它是一种基于IP的隧道协议,允许在GTP UProtocolEnt...

Github仓库重命名

1.在Github上重命名仓库,转到您自己的仓库,找到Setting标记,然后单击Options中的Settings以设置Repositoryname。2.修改本地仓库信息。由于远程仓库名称已更改,因此本地对应的仓库名称也应更改。1.检查当前远程仓库的信息$gitremote-v列出了所有远程仓库信息,包括网站地址。2.修改本地对应远程仓库的地址。修改后,使...

PCL点云分割(2)

点云的分割是我想做的机器人手臂捕捉的一个非常重要的部分,因此首先要了解,如果我使用点云库来处理我用kinect获得的点云数据,这个例程也是由我自己慢慢修改程序并结合官方API的解释来实现的。如果我直接更改源程序,由于数据类型、头文件和其他原因,其中的许多细节可能无法编译,我们将很难找出错误。首先,让我们看看我自己设定的场景。然后我使用Kinect获取数据并观...