一个简单的实时处理机,RealTime+WebServices
说这个实时处理机简单,主要是因为开设的几个线程都是单一的。他们之间无互相通信。所以相对很简单。
不过每一个线程直接调用了一个独立类似的过程,所以这里就用委托代替。启动线程用一个简单的类封装。下面是封装代码:
 using System;
using System; using System.Threading;
using System.Threading;
 namespace TRealTime
namespace TRealTime {
{ /// <summary>
    /// <summary> /// TopWork 的摘要说明。
    /// TopWork 的摘要说明。 /// </summary>
    /// </summary> public class TopWork
    public class TopWork {
    { //直接调用这些方法,可以用一个参数
        //直接调用这些方法,可以用一个参数 public delegate String DelegateRealTimeWebMethod();
        public delegate String DelegateRealTimeWebMethod(); public delegate void DelegateSendLog(String msg,TRealTime.MainForm.LogFlag lf);
        public delegate void DelegateSendLog(String msg,TRealTime.MainForm.LogFlag lf); public delegate void DelegateWork(TopWork t);
        public delegate void DelegateWork(TopWork t);
 public TopWork()
        public TopWork() {
        { //
            // // TODO: 在此处添加构造函数逻辑
            // TODO: 在此处添加构造函数逻辑 //
            // }
        }
 public TopWork(DelegateRealTimeWebMethod m,int threadIndex,int sleepLong)
        public TopWork(DelegateRealTimeWebMethod m,int threadIndex,int sleepLong) {
        { RealTimeWebMethod = m;
            RealTimeWebMethod = m; ThreadIndex       = threadIndex;
            ThreadIndex       = threadIndex; SleepLong         = sleepLong;
            SleepLong         = sleepLong; }
        }
 /// <summary>
        /// <summary> /// 默认运行中
        /// 默认运行中 /// </summary>
        /// </summary> private bool threadFlag = true;
        private bool threadFlag = true; public bool ThreadFlag
        public bool ThreadFlag {
        { get
            get {
            { lock(this)
                lock(this) {
                { return threadFlag;
                    return threadFlag; }
                } }
            }
 set
            set {
            { lock(this)
                lock(this) {
                { threadFlag = value;
                    threadFlag = value; }
                } }
            } }
        }
 /// <summary>
        /// <summary> /// 委托方法
        /// 委托方法 /// </summary>
        /// </summary> DelegateSendLog n;
        DelegateSendLog n; /// <summary>
        /// <summary> /// 委托方法
        /// 委托方法 /// </summary>
        /// </summary> public DelegateSendLog DelSendLog
        public DelegateSendLog DelSendLog {
        { get{return n;}
            get{return n;} set{n = value;}
            set{n = value;} }
        }
 /// <summary>
        /// <summary> /// 委托方法
        /// 委托方法 /// </summary>
        /// </summary> DelegateRealTimeWebMethod m;
        DelegateRealTimeWebMethod m; /// <summary>
        /// <summary> /// 委托方法
        /// 委托方法 /// </summary>
        /// </summary> public DelegateRealTimeWebMethod RealTimeWebMethod
        public DelegateRealTimeWebMethod RealTimeWebMethod {
        { get{return m;}
            get{return m;} set{m = value;}
            set{m = value;} }
        }
 /// <summary>
        /// <summary> /// 线程索引
        /// 线程索引 /// </summary>
        /// </summary> private int threadIndex = 1;
        private int threadIndex = 1; /// <summary>
        /// <summary> /// 线程索引
        /// 线程索引 /// </summary>
        /// </summary> public int ThreadIndex
        public int ThreadIndex {
        { get{return threadIndex;}
            get{return threadIndex;} set{threadIndex = value;}
            set{threadIndex = value;} }
        }
 /// <summary>
        /// <summary> /// 睡眠时间
        /// 睡眠时间 /// </summary>
        /// </summary> private int sleepLong = 1000;
        private int sleepLong = 1000; /// <summary>
        /// <summary> /// 睡眠时间
        /// 睡眠时间 /// </summary>
        /// </summary> public int SleepLong
        public int SleepLong {
        { get{return sleepLong;}
            get{return sleepLong;} set{sleepLong = value;}
            set{sleepLong = value;} }
        }
 public void Run()
        public void Run() {
        { String Msg = String.Empty;
            String Msg = String.Empty; 
 DelSendLog("启动线程" + ThreadIndex, TRealTime.MainForm.LogFlag.Normal);
            DelSendLog("启动线程" + ThreadIndex, TRealTime.MainForm.LogFlag.Normal);
 while(ThreadFlag)
            while(ThreadFlag) {
            { try
                try {
                { Msg = RealTimeWebMethod();
                    Msg = RealTimeWebMethod();                 
     if(Msg != null && Msg.Length > 0)
                    if(Msg != null && Msg.Length > 0) DelSendLog(Msg, TRealTime.MainForm.LogFlag.Normal);
                        DelSendLog(Msg, TRealTime.MainForm.LogFlag.Normal);
 Thread.Sleep(SleepLong);//休息1秒
                    Thread.Sleep(SleepLong);//休息1秒 }
                } catch(ThreadAbortException e)
                catch(ThreadAbortException e) {
                { DelSendLog(e.Message, TRealTime.MainForm.LogFlag.Warn);
                    DelSendLog(e.Message, TRealTime.MainForm.LogFlag.Warn); }
                } }
            }
 DelSendLog("停止线程" + ThreadIndex,  TRealTime.MainForm.LogFlag.Warn);
            DelSendLog("停止线程" + ThreadIndex,  TRealTime.MainForm.LogFlag.Warn); }
        } }
    } }
}
下面是启动线程调用:
 //启动线程1
            //启动线程1 T1.RealTimeWebMethod = new TRealTime.TopWork.DelegateRealTimeWebMethod(RT.RealTimeWebMethod1);
            T1.RealTimeWebMethod = new TRealTime.TopWork.DelegateRealTimeWebMethod(RT.RealTimeWebMethod1); T1.DelSendLog        = new TRealTime.TopWork.DelegateSendLog(SendLog);
            T1.DelSendLog        = new TRealTime.TopWork.DelegateSendLog(SendLog); T1.ThreadIndex       = 1;
            T1.ThreadIndex       = 1; T1.SleepLong         = 2000;
            T1.SleepLong         = 2000;
 T1.ThreadFlag = true;
            T1.ThreadFlag = true; thread1 = new Thread(new ThreadStart(T1.Run));
            thread1 = new Thread(new ThreadStart(T1.Run)); thread1.IsBackground=true;
            thread1.IsBackground=true; thread1.Start();
            thread1.Start();代码基本大意这个样子,如果有其他不明白的地方,可以给我来email
 
                     
                    
                 
                    
                

 
     
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号