C# XNA でマルチスレッド コードを記述しようとしています。私がやりたいことは、for ループの計算を新しいスレッドに移動することです。これを行うために、XNA で ThreadStart() メソッドを使用しています。ただし、for ループを新しいスレッドに移動することはできますが、それは変数を受け取るメソッドの一部であり、スレッド内では、for ループはスレッドの外部で変数を使用できません。
public static string EndianFlip32BitChunks(string input)
{
//32 bits = 4*4 bytes = 4*4*2 chars
string result = "";
ThreadStart threadStarter = delegate
{
for (int i = 0; i < input.Length; i += 8)
for (int j = 0; j < 8; j += 2)
{
//append byte (2 chars)
result += input[i - j + 6];
result += input[i - j + 7];
}
};
Thread loadingThread = new Thread(threadStarter);
loadingThread.Start();
return result;
}
基本的に、スレッドの外側からスレッドに変数を取得する方法を考えています。これらの変数も変化している可能性があります。上記のコードの場合、使用する必要がある変数は文字列の結果です。文字列がスレッドの外に残っている場合、コードは機能しますが、スレッドは初期値を読み取るだけで、その値を更新することはありません。