在c#控制台应用程序中的两个线程之间传递变量(这里是新手)

时间:2016-04-10 02:54:55

标签: c# multithreading console-application

我想知道如何在c#控制台应用程序中将变量从一个线程发送到另一个线程。例如,

using System;
using System.Threading;

namespace example
{
    class Program
    {
        static void Main(string[] args)
        {
            int examplevariable = Convert.ToInt32(Console.ReadLine ());
            Thread t = new Thread(secondthread);
            t.Start();

        }

    static void secondthread()
    {
        Console.WriteLine(+examplevariable);
    }
}
}

我想制作" secondthread"认识" examplevariable"。

2 个答案:

答案 0 :(得分:3)

onReceive有一个过载,它将参数作为对象。您可以将主线程变量传递给它并将其转换为变量类型

Thread.Start()

如果要传递多个变量,则使用模型类并使用属性绑定,如下所示

    using System;
    using System.Threading;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                int examplevariable = Convert.ToInt32(Console.ReadLine());
                Thread t = new Thread(secondthread);
                t.Start(examplevariable);
            }

            static void secondthread(object obj)
            {
                int examplevariable = (int) obj;
                Console.WriteLine(examplevariable);
                Console.Read();
            }

        }
    }

希望这会有所帮助

答案 1 :(得分:1)

执行此操作的简单方法,但可能无法在所有方案中工作,将在类上定义静态变量,并将从控制台读入的值分配给静态变量。像这样:

class Program
{

    static int examplevariable;

    static void Main(string[] args)
    {
        examplevariable = Convert.ToInt32(Console.ReadLine ());
        Thread t = new Thread(secondthread);
        t.Start();

    }

    static void secondthread()
    {
        Console.WriteLine(+examplevariable);
    }

另外,请参阅有关如何将参数传递给线程的问题:

ThreadStart with parameters