软讯网络 > 软件时空 > 软件相关 > .NET2003下的安全性线程封装
【标 题】:.NET2003下的安全性线程封装
【关键字】:
.NET2003
【来 源】:http://www.cublog.cn/u/23701/showart.php?id=213012
.NET2003下的安全性线程封装
|
using System.Threading; using Syste.windows.Form; delegate void myThreadHandle(object,EventArgs); class SafeThread:IDispose { private Thread myThread; private bool isLocked; private Form form1; private myThreadHandle handle1; private EventArgs e; public SafeThread(Form fromForm,bool bLocked,EventArgs eRef) { this.form1 = fromForm; this.isLocked = bLocked; this.e = eRef; handle1 += new myThreadHandle(this.form1.CallBackFunc); } public void Run() { if(!isLocked) { this.isLocked = true; handle(this.form1,e); this.isLocked = false; } else { //this.isLocked = false;
} } public void Dispose() { Dispose(true); GC.SuppressFinalize(); } public virtual void Dispose(bool b) { if(!this.disposed) { if(disposing) { component.Dispose(); } CloseHandle(handle); handle = IntPtr.Zero; } } ~SafeThread() { Dispose(false); } } class Form1:Form { //.....Others Code
public void CallBackFunc(object obj,EventArgs e) { //do something
} } 通过一个加锁的线程来调用原先窗体中的方法
|