我还在学习一些关于线程的知识。我有一个经理类,它有一些基本的业务代码,可以调用某些类方法并为视图做准备。这些方法转到我在创建新线程时实例化的管理器类。当我尝试调用类方法时,它会抛出一个空指针,即使我知道它正在自己的线程中工作。
我假设正在发生的是试图调用该方法的当前线程无法访问新线程化的类方法。这里有一些代码来解释:
public class MyClass
{
public void Test()
{
Console.WriteLine("Yay It is working");
}
}
public class Manager
{
public MyClass MyClass;
private Thread myClassThread;
public Manager()
{
myClassThread = new Thread(() => MyClass = new MyClass());
myClassThread.Start();
}
public static void Main(string[] Args)
{
var manager = new Manager().MyClass;
manager.Test();
}
}
我还没有测试过这段代码是否可以编译,所以它背后的基本思想就是我想要表达的。我的假设是否正确,即我当前的线程无法访问新的 MyClass 测试方法,即使我可以访问在新线程中实例化的变量?我该如何解决这个问题?我应该在 Test 方法中而不是在管理器中放置一个新线程吗?多线程有标准吗?