当前位置:编程学习 > C#/ASP.NET >>

如何暂停,重启线程


public void go()
{
ThreadStart ts= new ThreadStart(TD);
        if (ts != null)
        {
            Thread td = new Thread(ts);
            td.Start();
        }

}
public void TD()
{
//....
}

这是一个局部的线程,我想在外部点击"暂停"按钮时,这个线程暂停
按"重启"线程重启, --------------------编程问答-------------------- 线程名.Suspend();挂起一个线程
线程名.Resume();继续刚才被挂起的线程 --------------------编程问答--------------------

td.Suspend();//挂起
td.Resume();//继续进行
td.Abort();//终止


看你自己想要什么操作了,暂停就用挂起了,如果要停止就用ABORT,然后再START --------------------编程问答-------------------- 但我的是局部线程.不是全局的啊. --------------------编程问答-------------------- 1.线程暂停的Suspend()不推荐使用,要暂停就直接退出,然后重新启动,请查看msdn
2.局部线程可以在实现后放到容器中,如List或Dictionary,根据线程标识就可以控制
--------------------编程问答-------------------- td.Suspend();//挂起
td.Resume();//继续进行
td.Abort();//终止

--------------------编程问答--------------------
引用 2 楼 cfvgodot 的回复:
C# code

td.Suspend();//挂起
td.Resume();//继续进行
td.Abort();//终止



看你自己想要什么操作了,暂停就用挂起了,如果要停止就用ABORT,然后再START

是滴 --------------------编程问答-------------------- 做个全局bool变量当标记。
或者像上面说的 --------------------编程问答-------------------- 可以转换一个思维方式,在开始方法的时候让线程abort,然后重新执行线程。 --------------------编程问答--------------------
引用 5 楼 mayonglong 的回复:
td.Suspend();//挂起
td.Resume();//继续进行


这样的方法都被标示为作废的方法,别再使用了。

想要暂停,重启,自己线程里用某个变量控制 --------------------编程问答-------------------- 你先停止,再启动,不就是重启了 --------------------编程问答--------------------
引用 2 楼 cfvgodot 的回复:
C# code

td.Suspend();//挂起
td.Resume();//继续进行
td.Abort();//终止



看你自己想要什么操作了,暂停就用挂起了,如果要停止就用ABORT,然后再START

就可以解决了 --------------------编程问答--------------------
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Threading;  
 
namespace MyThread  
{  
class Program  
{  
private static int newTask(int ms)  
{  
Console.WriteLine("任务开始");  
Thread.Sleep(ms);  
Random random = new Random();  
int n = random.Next(10000);  
Console.WriteLine("任务完成");  
return n;  
}  
 
private delegate int NewTaskDelegate(int ms);  
   
 
static void Main(string[] args)  
{  
NewTaskDelegate task = newTask;  
IAsyncResult asyncResult = task.BeginInvoke(2000, null, null);  
 
// EndInvoke方法将被阻塞2秒  
int result = task.EndInvoke(asyncResult);     
Console.WriteLine(result); 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,