我想知道如何在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"。
答案 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);
}
另外,请参阅有关如何将参数传递给线程的问题: