私はスレッド化に少し慣れていません(C#に慣れていない、スレッド化をあまり行っていないだけです)。なぜこれが機能しないのか誰かが私に説明できますか?
「Loop」と呼ぶメソッドを呼び出すスレッドがあります。ループには継続的に実行されるwhileループが含まれており、whileのすべてのループで、Aキーがダウンしているかどうかを確認する必要があります(XNAフレームワーク内のMicrosoftのキーボードクラスを使用)。しかし、何らかの理由で、何かが押されていることを登録することはありません。
static Thread thread = new Thread(Loop);
static bool abort = false;
public static void Begin()
{
thread.Start();
}
private static void Loop()
{
while (!abort)
{
if (Keyboard.GetState().IsKeyDown(Keys.A))
Console.WriteLine("A pressed.");
}
}
Console.WriteLine()が呼び出されない理由を誰かが知っているでしょうか。
編集:
少し説明したほうがいいと思います。私が実際にやろうとしているのは、C#でのActionScriptのイベントに似たものを作成することです。したがって、このスレッドを含むこの別のクラスでその条件が満たされた場合に呼び出す「条件」と「アクション」を渡したいと思います。これにより、オブジェクトに「イベントリスナー」を追加するだけで、イベントをチェックするコードにIfステートメントを記述するのではなく、イベントの1つがトリガーされるかどうかを自動的に常にチェックできます。
そうしようとすると、私が最初にテストしたのは、このXNAキーボードに関するものでした。これは、私が最初にこのシステムを構築したかった理由の1つでしたが、機能しませんでした。そこで、上記で投稿したスタンドアロンコードを作成して、以前のコードでエラーが発生したのに、それでも機能しないかどうかを確認しました。