资源简介

多线程有很好的并发性即无序性,在某些特殊情况下需要用到多线程然而又要使其具备顺序性,这种时候就有了一个特殊的场景那就是多线程顺序执行,在现在VS2015中Task自带了顺序执行的方法,但在此之前的旧项目中如果需要使用多线程顺序执行该怎么办呢?Task又是怎么实现的呢?这里提供了一种类似Task顺序执行多线程的实现(可能跟Task的原理有很大区别),希望对大家能有帮助,对此类问题的实现有更好的思路和技巧的同学欢迎留言,大家一起探讨。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Threading;

namespace _3vjDemos
{
    [Serializable]
    public class OrderedExecuteThread
    {
        public OrderedExecuteThread ThreadFront { get; set; }
        [System.xml.Serialization.xmlIgnore]
        public Actionject> ActionDoing { get; set; }        
        [System.xml.Serialization.xmlIgnore]
        public Thread Thread { get; set; }        
        public bool IsCurrentExcuted { get; set; }
        public bool IsCurrentStarted { get; set; }
        public bool IsCurrentDealt { get; set; }
        public int OrderedIndex { get; set; }      
        public void ExecuteThread(object obj)
        {
            try
            {
                IsCurrentDealt = true;
                if (ActionDoing != null)
                {
                    ActionDoing.Invoke(obj);//DoSomeThing
                }
                Thread.Sleep(new Random().Next(0 200) * 100);
                while (true)
                {
                    if ((ThreadFront == null || ThreadFront.Thread == null || ThreadFront.IsCurrentExcuted) && !this.IsCurrentExcuted&&!IsCurrentStarted)
                    {
                        Thread.Start(this.OrderedIndex);
                        this.IsCurrentStarted = true;
                    }
                    Thread.Sleep(50);
                    if (!Thread.IsAlive && IsCurrentStarted)
                    {
                        this.IsCurrentExcuted = true;
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(“Thread “ + this.OrderedIndex.ToString() + “ exit by “ + ex.Message);
            }
        }

    }

    public class OrderedExecuteThreads
    {
        public List

评论

共有 条评论