我正在尝试在 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;
}
基本上,我想知道如何将变量从线程外部获取到线程中。这些变量也可能会发生变化。在上面显示的代码的情况下,我需要使用的变量是字符串结果。如果字符串留在线程之外,则代码可以工作,但是线程只读取初始值并且从不更新该值。