0

我正在尝试在 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;
    }

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

4

0 回答 0