多线程变量问题

时间:2013-09-10 17:03:33

标签: c# multithreading xna

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

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

0 个答案:

没有答案