using System;
using System.Threading;public class Worker
{
// This method will be called when the thread is started.
public void DoWork()
{
while (!_shouldStop)
{
//进行某个操作,当完成了,就立即通知主线程,所有的子线程就应该结束。
//Console.WriteLine("worker thread: working...");
...
}
Console.WriteLine("worker thread: terminating gracefully.");
}
public void RequestStop()
{
_shouldStop = true;
}
// Volatile is used as hint to the compiler that this data
// member will be accessed by multiple threads.
private volatile bool _shouldStop;
}public class WorkerThreadExample
{
static void Main()
{
// Create the thread object. This does not start the thread.
Worker workerObject = new Worker();
Thread[] workerTheads=new Thread[10];
for(int i=0;i<10;i++)
{
workerThread[i] = new Thread(workerObject.DoWork);
// Start the worker thread.
workerThread.Start();
}
}
}
我定义了10条子线程,即workerTheads,但他们在子线程里面怎么通知主线程把所有子线程都终止?
解决方案 »
- C#高手请进,我来踢馆 (虚拟机问题,欢迎大家参与讨论)
- 求bitmap的最大宽高与内存的关系
- WebServices如何判断是同一个用户
- .net打包问题
- 编程创建IIS asp.net 虚拟路径时如何指定版本为asp.net 2.0?
- winform中如何得到本地的Cookies值?
- 一个简单的windows服务为什么占用了十几兆内存?
- [提问] C#如何获取IIS framework runtime version?
- ProgressBar问题
- 如何让一个用VS.NET写好的WINDOWS FORM程序在没有.NET FRAMEWORK的机器运行
- 数据表查询的问题
- 请教一个,4*4方格游戏的算法问题
这个最简单,你要在主线程里结束子线程,
要么主线程必须要有一个监视循环,
要么设置一个事件,子线程调用这个事件
ThreadStart thdStart = new ThreadStart(DoWork);
thd = new Thread(thdStart);
thd.Start();
在子线程中关闭线程:
thd.Abort();