Es gibt eine Überlastung zu Thread.Start()
, die einen Parameter als Objekt nimmt. Sie können Ihre Hauptthread Variable auf das und werfen Sie es als Variablentyp
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();
}
}
}
wenn Sie wollen mehrere Variable übergeben dann verwenden, um eine Modellklasse und verwenden Eigenschaft verbindlich wie unten
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; }
}
}
Hope this passieren wird helfen
Dies scheint zu funktionieren, aber kann ich mehrere Variablen übertragen mit so etwas tun? – LonelyPyxel
Ja, Sie können nur Array von Variablen statt einer einzelnen Variablen übergeben wie 'int [] ar = new [] {1, 2, 3}; t.Start (ar); 'und cast ist wie' array int [] examplevariable = (int []) obj; Console.WriteLine (examplevariable [2]); 'auf diese Weise kann mehrere Variablen übergeben – Mostafiz
Siehe mein letztes Update der Antwort, auf diese Weise können Sie auch mehrere Variablen übergeben – Mostafiz