C# 开发编程

C#编程一般针对微软.NET系列(包括.NET Framework 和 .NET Core)工具和Runtime

无需中止或挂起即可立即终止无环线程

我正在实现一个协议库。 这是一个简化的描述。 主函数中的主线程将始终检查网络流上是否有某些数据(在tcpclient中)。 让我们说响应是收到的消息,而线程是一个正在运行的线程。 thread = new Thread(new ThreadStart(function)); thread.IsBackground = true; thread.Start(); while(true){ response = receiveMessage(); if (response != null) { thread.Suspend(); //I am searching for an alternative for the line above and not thread.Abort(). thread2 = new Thread(new ThreadStart(function2)); thread2.IsBackground = true; thread2.Start(); } } 到目前为止一切顺利,在while循环中实际上有更多的消息,并且还有一个用于处理不同类型的传入消息的状态机,但这应该足够了。 (还有不仅仅是函数“function”和“function2”)。 所以无论如何这些函数在这个应用程序中看起来都不清楚,因为协议是程序员隐藏的并且意味着它是一个库。 这意味着协议将启动一些程序员定义的函数作为线程,具体取决于程序在协议中的状态。 因此,如果接收到特殊响应(例如callAnotherFunction消息),我想突然终止一个线程(此处命名为“thread”),让我们说在100毫秒内。 但是我不知道它是在一个循环内执行还是没有循环,并且在它终止之前需要多少处理。 如何在不弃用Suspend或Exceptionthrowing Abort函数的情况下停止这些线程? […]