无法从C#中的线程类继承?
类无法从C#中的线程类继承?,c#,C#,类Thread是一个密封的类,这意味着它不能从中继承,我需要一个可重用的Thread实例,它应该从Thread类继承。有人知道如何重用tread吗?使用继承的更好替代方法是使用组合。创建您的类并拥有类型为Thread的成员。然后将类的方法映射为从线程成员调用方法,并添加您可能需要的任何其他方法。例如: public class MyThread { private Thread thread; // constructors public void Join()
Thread
是一个密封的类,这意味着它不能从中继承,我需要一个可重用的Thread
实例,它应该从Thread类继承。有人知道如何重用tread吗?使用继承的更好替代方法是使用组合。创建您的类并拥有类型为Thread
的成员。然后将类的方法映射为从线程成员调用方法,并添加您可能需要的任何其他方法。例如:
public class MyThread
{
private Thread thread;
// constructors
public void Join()
{
thread.Join();
}
// whatever else...
}
正如您自己所指出的,
Thread
是一个密封的类。显然,这意味着你不能从中继承。但是,您可以创建自己的BaseThread
类,您可以使用继承和重写该类来提供自定义功能
你明白了。试试组合?当线程从操作角度来看不可重用时,可恢复线程有什么意义?为什么不改用ThreadPool?这不关我的事,但你会做一些可怕和危险的事情。考虑与社区共享你的主要问题,我确信我们可以找到更好的解决方案。
abstract class BaseThread
{
private Thread _thread;
protected BaseThread()
{
_thread = new Thread(new ThreadStart(this.RunThread));
}
// Thread methods / properties
public void Start() => _thread.Start();
public void Join() => _thread.Join();
public bool IsAlive => _thread.IsAlive;
// Override in base class
public abstract void RunThread();
}
public MyThread : BaseThread
{
public MyThread()
: base()
{
}
public override void RunThread()
{
// Do some stuff
}
}