回答
创建线程的新实例并再次执行。 thread1 = new Thread(); thread1.start();
中止一个线程往往是一个坏主意。他是一名顾问。如果它是一个无限循环,则用于在没有堕胎的情况下停止线程的布尔值。
bool run = true;
Thread thread = new Thread(method);
thread.start();
private void method()
{
while(run)
{
}
}
停止线程,只需设置布尔为false,通常情况下,你可以重新启动它。
很好的建议。 'run'应该是'volatile',以避免由于编译器优化造成的无限期等待。 – Tudor 2012-03-06 10:34:25
考虑使用'lock',特别是在设置布尔值时。更好的是,将它与'monitor'结合使用。看看这里:http://stackoverflow.com/questions/1559293/c-sharp-monitor-wait-pulse-pulseall#1559662 – 2012-03-06 10:44:43
当我点击创建服务器时,我的线程函数开始。它执行一些初始化,然后进入包含socket.Accept()的无限循环。控制卡在这个语句,所以我不能使用这种锁定方法。 – Shashwat 2012-03-06 12:57:00
Thread.Abort不保证线程会终止。例如,如果您有一个长时间运行的查询,则Abort不会终止查询的执行或取消该线程。事实上,线程将一直持续到查询完成。
如果您在托管代码中执行所有操作并且未被非托管资源锁定,并且必须中止一个线程,那么thread.Abort()就完全正确。
但是,您不能在已终止的线程上调用Start。您必须创建另一个线程并在该线程上调用Start。在.NET中(与其他语言相比),创建线程有点昂贵,内存明智,所以存在一些缺点。
实际上一次又一次地创建线程不会太昂贵,因为它不会非常频繁地完成。 – Shashwat 2012-03-06 12:58:52
当您想要从头开始重新启动线程时,您实际上想要重新启动线程上的某个函数(代码流)的执行。当你创建一个线程并传递一个执行函数时,一旦函数完成它自己的执行,线程的生命就会终止。你只需要改变你的代码设计,这将允许重新启动一个新的线程重新启动函数。 但是对于简短的功能,我建议使用ThreadPool。
由于您正在使用.NET 4.0,其中MS引入了“合作取消框架”。你可以从这个blog了解更多。 直接处理线程是(越来越不鼓励)。
- 1. C#CF重新启动一个线程
- 2. 如何重新启动线程
- 3. 简单的后台线程在.NET中重新启动
- 4. 重新启动线程
- 5. 如何在C中重新启动System.Threading.Tasks.Task#
- 6. 停止到启动新的线程C#4.0
- 7. 在C中重新启动程序
- 8. Android:重新启动中断线程onResume
- 9. 重新启动正常的线程
- 10. 如何停止/启动或重新启动计时器线程
- 11. 如何在Android游戏中重新启动Java线程?
- 12. 如何在java中重新启动线程?
- 13. .NET WPF当启动新线程时MissingMethodException
- 14. C#.Net变量意外重新启动
- 15. 如何重新启动(重新启动)与C#代码的VPS?
- 16. .NET Framework 4.0是否需要重新启动?
- 17. 如何重新启动我的窗口服务以编程方式在c#.net
- 18. 如何重新启动程序? (重新启动按钮在游戏中)
- 19. 重新启动由多个线程
- 20. 如何在.NET 3.5中重用线程
- 21. 如何使用标志重新启动线程中的操作?
- 22. 主题:如何在线程完成后重新启动?
- 23. 重新启动线程的运行()
- 24. 停止并重新启动线程
- 25. 在新线程中启动课程
- 26. 在c#中重新启动Android活动
- 27. 取消线程并重新启动它
- 28. Python异常后重新启动线程
- 29. 如何重新启动/重置.Net中的SQL连接池?
- 30. 如何杀死应用程序线程并重新启动它?
一般来说,'Abort()'线程是一个坏主意。你想解决什么问题? – Heinzi 2012-03-06 10:23:49
这可以帮助你: - [重新启动在C#4.0中的线索] [1] [1]:http://stackoverflow.com/questions/1054889/restarting-a-thread-in-net- using-c – Misam 2012-03-06 10:25:00
停止和启动线程的要求有点不寻常 - 您尝试解决什么问题? – dice 2012-03-06 10:35:43