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