我想问一下,如何实现动态的分配或关闭线程。例如,我点击button1则自动打开一个新的线程执行文件删除操作,而我点击button2则又自动打开另一个新的线程返回计算机的当前日期?
解决方案 »
- 扩大交际圈,想和常年研究GIMP\CIMAGE\Paint.net \FreeImage\Devil\ImageMagick等人士交个朋友。
- 关于VS
- 请问大家一个问题(50分)
- 请问怎么样使另一个窗口贴在主窗口面板上?
- winform 中 datagrid自定义表头的问题
- 如何Response.Redirect新的页面到指定的框架中
- 想把两个串3.42和4.55相加该怎么弄啊(20分),谢谢!
- 一个简单的类引用问题
- 为什么SQL Server会占用这么多内存?如何清除?
- acptvc通缉中……帮我解释一下C#下WEBBROWSR控件的用法吧
- 如何获取局域网内电脑的共享文件夹列表???
- 求:NDoc For VS 2005(RTM.0502727-4200)
AsyncDelegate AsyncResult
异步委托提供以异步方式调用同步方法的能力。当同步调用一个委托时,Invoke 方法直接对当前线程调用目标方法。如果编译器支持异步委托,则它将生成 Invoke 方法以及 BeginInvoke 和 EndInvoke 方法。如果调用 BeginInvoke 方法,则公共语言运行库将对请求进行排队并立即返回到调用方。将对来自线程池的线程调用该目标方法。提交请求的原始线程自由地继续与目标方法并行执行,该目标方法是对线程池线程运行的。如果已经对 BeginInvoke 指定了回调,当目标方法返回时将调用它。在回调中,使用 EndInvoke 方法来获取返回值和输入/输出参数。如果没有对 BeginInvoke 指定回调,则可以在提交请求的原始线程上使用 EndInvoke。
{
MessageBox.Show("GetDate process is begin.");
GetDateDelegate gd = new GetDateDelegate(this.GetCurrentDate);
gd.BeginInvoke(new AsyncCallback(this.CallbackMethod),null);
}private void CallbackMethod(IAsyncResult iar)
{
AsyncResult ar = (AsyncResult) iar;
GetDateDelegate gd = (GetDateDelegate) ar.AsyncDelegate;
string msg = gd.EndInvoke(iar);
MessageBox.Show(msg);
}public delegate string GetDateDelegate();
{
System.Threading.Thread.Sleep(5000);
return DateTime.Now.ToString();
}
private Thread thread;
private void button1_Click(object sender, System.EventArgs e)
{
thread=new Thread(new ThreadStart(shanchu));
}
private void button2_Click(object sender, System.EventArgs e)
{
thread=new Thread(new ThreadStart(datatime));
}
private void shanchu()
{
//编写文件删除操作的代码
}
private void datatime()
{
//编写返回计算机的当前日期的代码
}
using System.Threading;
private Thread thread;
private void button1_Click(object sender, System.EventArgs e)
{
thread=new Thread(new ThreadStart(shanchu));
thread.Start();
}
private void button2_Click(object sender, System.EventArgs e)
{
thread=new Thread(new ThreadStart(datatime));
thread.Start();
}
private void shanchu()
{
//编写文件删除操作的代码
}
private void datatime()
{
//编写返回计算机的当前日期的代码
}