gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:21:56 25 4
gpt4 key购买 nike

我想知道如何在 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”。

最佳答案

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();
}

}
}

如果你想传递多个变量,那么使用模型类并使用属性绑定(bind),如下所示

using System;
using System.Threading;

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

static void secondthread(object obj)
{
TestModel newTm = (TestModel) obj;
Console.WriteLine(newTm.examplevariable1);
Console.WriteLine(newTm.examplevariable2);
Console.Read();
}

}

class TestModel
{
public int examplevariable1 { get; set; }
public string examplevariable2 { get; set; }

}
}

希望对你有帮助

关于c# - 在 c# 控制台应用程序中的 2 个线程之间传递变量(这里是新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com