一个操作线程的类
来源:互联网 发布:think python 豆瓣 编辑:程序博客网 时间:2024/05/09 02:44
下面是一个操作线程的类,具体的参数可以修改.可以利用属性来返回值.
using System;
using System.Threading;
using System.IO;
namespace IconMes.ReadFile
...{
/**//// <summary>
/// ThreadClass 的摘要说明。
/// </summary>
public class ThreadClass
...{
public ThreadClass(string folder,string type,int time)
...{
//
// TODO: 在此处添加构造函数逻辑
//
blnIsStopped = true;
blnSuspended = false;
blnStarted = false;
_folder = folder;
_type = type;
_readTime = time;
}
private Thread thdSubThread = null;
private Mutex mUnique = new Mutex();
private bool blnIsStopped;
private bool blnSuspended;
private bool blnStarted;
private string _folder;
private string _type;
private int _readTime;
public bool IsStopped
...{
get
...{
return blnIsStopped;
}
}
public bool IsSuspended
...{
get
...{
return blnSuspended;
}
}
public string Folder
...{
get
...{
return _folder;
}
}
public string Type
...{
get
...{
return _type;
}
}
public int ReadTime
...{
get
...{
return _readTime;
}
}
public void Start()
...{
if( !blnStarted )
...{
thdSubThread = new Thread( new ThreadStart( ReadThread ) );
blnIsStopped = false;
blnStarted = true;
thdSubThread.Start();
}
}
public void Stop()
...{
if( blnStarted )
...{
if( blnSuspended )
...{
Resume();
}
blnStarted = false;
blnIsStopped = true;
thdSubThread.Join();
}
}
public void Suspend()
...{
if( blnStarted && !blnSuspended )
...{
blnSuspended = true;
mUnique.WaitOne();
}
}
public void Resume()
...{
if( blnStarted && blnSuspended )
...{
blnSuspended = false;
mUnique.ReleaseMutex();
}
}
public void Dispose()
...{
Stop();
GC.SuppressFinalize(this);
}
private void ReadThread()
...{
StreamWriter myWriter=null;
do
...{
mUnique.WaitOne();
mUnique.ReleaseMutex();
try
...{
myWriter=new StreamWriter(@"E:IconMes.ReadFileinDebugaa"+_type+".txt",true);
myWriter.WriteLine(DateTime.Now.ToString());
myWriter.Close();
}
catch...{};
Thread.Sleep(_readTime);
}while( blnIsStopped == false );
}
}
}
using System.Threading;
using System.IO;
namespace IconMes.ReadFile
...{
/**//// <summary>
/// ThreadClass 的摘要说明。
/// </summary>
public class ThreadClass
...{
public ThreadClass(string folder,string type,int time)
...{
//
// TODO: 在此处添加构造函数逻辑
//
blnIsStopped = true;
blnSuspended = false;
blnStarted = false;
_folder = folder;
_type = type;
_readTime = time;
}
private Thread thdSubThread = null;
private Mutex mUnique = new Mutex();
private bool blnIsStopped;
private bool blnSuspended;
private bool blnStarted;
private string _folder;
private string _type;
private int _readTime;
public bool IsStopped
...{
get
...{
return blnIsStopped;
}
}
public bool IsSuspended
...{
get
...{
return blnSuspended;
}
}
public string Folder
...{
get
...{
return _folder;
}
}
public string Type
...{
get
...{
return _type;
}
}
public int ReadTime
...{
get
...{
return _readTime;
}
}
public void Start()
...{
if( !blnStarted )
...{
thdSubThread = new Thread( new ThreadStart( ReadThread ) );
blnIsStopped = false;
blnStarted = true;
thdSubThread.Start();
}
}
public void Stop()
...{
if( blnStarted )
...{
if( blnSuspended )
...{
Resume();
}
blnStarted = false;
blnIsStopped = true;
thdSubThread.Join();
}
}
public void Suspend()
...{
if( blnStarted && !blnSuspended )
...{
blnSuspended = true;
mUnique.WaitOne();
}
}
public void Resume()
...{
if( blnStarted && blnSuspended )
...{
blnSuspended = false;
mUnique.ReleaseMutex();
}
}
public void Dispose()
...{
Stop();
GC.SuppressFinalize(this);
}
private void ReadThread()
...{
StreamWriter myWriter=null;
do
...{
mUnique.WaitOne();
mUnique.ReleaseMutex();
try
...{
myWriter=new StreamWriter(@"E:IconMes.ReadFileinDebugaa"+_type+".txt",true);
myWriter.WriteLine(DateTime.Now.ToString());
myWriter.Close();
}
catch...{};
Thread.Sleep(_readTime);
}while( blnIsStopped == false );
}
}
}
调用的部分代码,此处为多线程:
ThreadClass[] readThread;
for(int i=0;i<ds1.Tables[0].Rows.Count;i++)
...{
readThread[i] = new ThreadClass(ds1.Tables[0].Rows[i]["Folder"].ToString(),ds1.Tables[0].Rows[i]["Type"].ToString(),Convert.ToInt32(ds1.Tables[0].Rows[i]["Time"].ToString()));
readThread[i].Start();
}
for(int i=0;i<ds1.Tables[0].Rows.Count;i++)
...{
readThread[i] = new ThreadClass(ds1.Tables[0].Rows[i]["Folder"].ToString(),ds1.Tables[0].Rows[i]["Type"].ToString(),Convert.ToInt32(ds1.Tables[0].Rows[i]["Time"].ToString()));
readThread[i].Start();
}
- 一个操作线程的类
- 一个线程操作另一个线程的控件
- C#在一个线程中操作另一个线程的控件
- 在一个线程中操作窗体线程的控件
- WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD
- 多个线程共同的等待一个操作
- 一个简单的线程类
- C#如何操作一个线程
- CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待
- JAVA多线程—CountDownLatch-一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
- C#一个线程操作另一个线程的控件的方法(转)
- 线程同步的小例子(两个线程对一个List进行写操作)
- 关于一个有3个线程的线程池相关操作(用作备忘)
- iOS 多个线程对数组操作(遍历,插入,删除),实现一个线程安全的NSMutabeArray
- Android的Activity启动长时间的操作开启一个Service比开启一个线程好
- 线程的概念&操作
- libjingle的线程操作
- java线程的操作
- IIS信息服务器排错指导
- 这一天终于来了
- 2006年12月20日
- 关于本体构造工具选择及其相关思考
- Thinking in C++(4)
- 一个操作线程的类
- 一个男性自杀者的遗书
- WEB打印分页类(JS)
- Fedora Core 6 正式版下载地址
- 判断点在多边形中
- Server.Transfer VS Response.Redirect
- 连载1---第1章:算法在计算机中的角色(1.1:算法)
- 新网出问题了?
- [语音合成技术第四讲]使用C++实现语音识别