Abort是强行终止线程的,比如你所做的工作做了一半,突然不想做了就可以用它结束线程.
当线程所做的工作完成后就会自动结束,释放资源的,不用再用Abort()方法
当线程所做的工作完成后就会自动结束,释放资源的,不用再用Abort()方法
解决方案 »
- DataSet DataGridView 问题
- comboBox中如何保存附加值???
- winforms程序打包加入卸载的奇怪问题
- 自定义空间无法触发Click事件
- DataGridView问题
- FindWindow 怎么只能得到部分进程的句柄,高手帮我解答,谢谢。
- C#疑问
- 有关winfrom中dataGrid的问题 DataGrid和一个DataSet绑定后,能否隐藏DataSet里面的一列的值呢
- 能否改变richtextbox Enable 后的背景色和前景色。(mz1867)
- 这行代码有问题吗?
- winfrom安装部署问题
- DataGridView与ListBox的组合问题,不难但是思路很重要~~
但是我这个线程里有一个Timer,是循环执行的。我必须执行这个Timer.Stop()才行。
大家再看看怎么样操作?
http://msdn.microsoft.com/zh-cn/library/a9fyxz7d(VS.80).aspx
做一点扩展。你可以实际去运行我写的这个demo程序,实际观察一下效果。using System;
using System.Threading;public class ThreadWork
{
public event EventHandler<EventArgs> Stop; public void DoWork()
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Working thread...");
Thread.Sleep(100);
}
if (this.Stop != null)
this.Stop(this, EventArgs.Empty);
}
}
class ThreadTest
{
public static void Main()
{
ThreadWork task = new ThreadWork();
task.Stop += new EventHandler<EventArgs>(task_Stop);
ThreadStart myThreadDelegate = new ThreadStart(task.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
for (int i = 0; i < 3; i++)
{
Console.WriteLine("In main.");
Thread.Sleep(10);
}
Console.WriteLine("主程序执行结束");
Console.ReadKey();
} static void task_Stop(object sender, EventArgs e)
{
Console.WriteLine("线程任务触发了Stop事件。");
for (int i = 0; i < 3; i++)
{
Console.WriteLine("In task_Stop.");
Thread.Sleep(100);
}
}
}
按你这么说不是一个变量就可以了么?相当于用变量控制循环是否继续.
if(变量)
Timer.stop()