私はまだスレッドについて少し学んでいます。特定のクラス メソッドを呼び出してビュー用に準備する基本的なビジネス コードを含むマネージャー クラスがあります。これらのメソッドは、新しいスレッドの作成中にインスタンス化するマネージャー クラスに送られます。クラス メソッドを呼び出そうとすると、独自のスレッド内で動作していることがわかっていても、null ポインターがスローされます。
私が想定しているのは、メソッドを呼び出そうとしている現在のスレッドが、新しくスレッド化されたクラス メソッドにアクセスできないということです。説明するコードを次に示します。
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 メソッド内に新しいスレッドを配置する必要がありますか? マルチスレッドの標準はありますか?