一个简单的实时处理机,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


浙公网安备 33010602011771号