一个简单的实时处理机,RealTime+WebServices

说这个实时处理机简单,主要是因为开设的几个线程都是单一的。他们之间无互相通信。所以相对很简单。
不过每一个线程直接调用了一个独立类似的过程,所以这里就用委托代替。启动线程用一个简单的类封装。下面是封装代码:

using System;
using System.Threading;

namespace TRealTime
{
    
/// <summary>
    
/// TopWork 的摘要说明。
    
/// </summary>

    public class TopWork
    
{
        
//直接调用这些方法,可以用一个参数
        public delegate String DelegateRealTimeWebMethod();
        
public delegate void DelegateSendLog(String msg,TRealTime.MainForm.LogFlag lf);
        
public delegate void DelegateWork(TopWork t);

        
public TopWork()
        
{
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }


        
public TopWork(DelegateRealTimeWebMethod m,int threadIndex,int sleepLong)
        
{
            RealTimeWebMethod 
= m;
            ThreadIndex       
= threadIndex;
            SleepLong         
= sleepLong;
        }


        
/// <summary>
        
/// 默认运行中
        
/// </summary>

        private bool threadFlag = true;
        
public bool ThreadFlag
        
{
            
get
            
{
                
lock(this)
                
{
                    
return threadFlag;
                }

            }


            
set
            
{
                
lock(this)
                
{
                    threadFlag 
= value;
                }

            }

        }


        
/// <summary>
        
/// 委托方法
        
/// </summary>

        DelegateSendLog n;
        
/// <summary>
        
/// 委托方法
        
/// </summary>

        public DelegateSendLog DelSendLog
        
{
            
get{return n;}
            
set{n = value;}
        }


        
/// <summary>
        
/// 委托方法
        
/// </summary>

        DelegateRealTimeWebMethod m;
        
/// <summary>
        
/// 委托方法
        
/// </summary>

        public DelegateRealTimeWebMethod RealTimeWebMethod
        
{
            
get{return m;}
            
set{m = value;}
        }


        
/// <summary>
        
/// 线程索引
        
/// </summary>

        private int threadIndex = 1;
        
/// <summary>
        
/// 线程索引
        
/// </summary>

        public int ThreadIndex
        
{
            
get{return threadIndex;}
            
set{threadIndex = value;}
        }


        
/// <summary>
        
/// 睡眠时间
        
/// </summary>

        private int sleepLong = 1000;
        
/// <summary>
        
/// 睡眠时间
        
/// </summary>

        public int SleepLong
        
{
            
get{return sleepLong;}
            
set{sleepLong = value;}
        }


        
public void Run()
        
{
            String Msg 
= String.Empty; 

            DelSendLog(
"启动线程" + ThreadIndex, TRealTime.MainForm.LogFlag.Normal);

            
while(ThreadFlag)
            
{
                
try
                
{
                    Msg 
= RealTimeWebMethod();                
    
                    
if(Msg != null && Msg.Length > 0)
                        DelSendLog(Msg, TRealTime.MainForm.LogFlag.Normal);

                    Thread.Sleep(SleepLong);
//休息1秒
                }

                
catch(ThreadAbortException e)
                
{
                    DelSendLog(e.Message, TRealTime.MainForm.LogFlag.Warn);
                }

            }


            DelSendLog(
"停止线程" + ThreadIndex,  TRealTime.MainForm.LogFlag.Warn);
        }

    }

}

下面是启动线程调用:

            //启动线程1
            T1.RealTimeWebMethod = new TRealTime.TopWork.DelegateRealTimeWebMethod(RT.RealTimeWebMethod1);
            T1.DelSendLog        
= new TRealTime.TopWork.DelegateSendLog(SendLog);
            T1.ThreadIndex       
= 1;
            T1.SleepLong         
= 2000;

            T1.ThreadFlag 
= true;
            thread1 
= new Thread(new ThreadStart(T1.Run));
            thread1.IsBackground
=true;
            thread1.Start();

代码基本大意这个样子,如果有其他不明白的地方,可以给我来email

posted on 2004-08-25 08:37 停留.Xp 阅读(524) 评论(0) 编辑 收藏

导航

<2004年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

公告

昵称:停留.Xp
园龄:7年5个月
粉丝:0
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

相册

友情链接

最新评论

阅读排行榜

评论排行榜

推荐排行榜