Bir C# konsol uygulamasında bir iş parçacığından diğerine nasıl bir değişken gönderebileceğimi merak ediyorum. Örneğin, "secondthread" özelliğini "examplevariable" tanımasını istiyorum.Bir C# konsol uygulamasında 2 iş parçacığı arasında geçen değişkenler (burada yeni kullanıcı)
3
A
cevap
3
: öylesine gibi: Ayrıca
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);
}
, bir Konuya paametreleri nasıl bu soruya bakın. Bunun için ana iş parçacığı değişken geçmek ve daha sonra birden değişken geçirmek model sınıfını kullanın ve Umut
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; }
}
}
altında böyle bağlayıcı özelliği kullanmak istiyorsanız sizin değişken türü
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();
}
}
}
olarak yayınlayabileceğim
1
Bunu yapmanın kolay bir yolu, ancak tüm senaryolarda çalışmayabilir, sınıfta bir statik değişken tanımlamak ve okunan değeri konsoldan statik değişkene atamak olabilir. nesne olarak bir parametre alır Thread.Start()
için bir aşırı yük vardır
yardımcı olacaktır Bu işe yarayabilir, ancak bu gibi bir şeyi kullanarak birden çok değişken aktarımı yapabilir miyim? – LonelyPyxel
evet sadece değişken dizisini bunun yerine tek bir değişkene geçirebilirsiniz. Int [] ar = new [] {1, 2, 3}; t.Start (ar); 've cast, array int [] examplevariable = (int []) obj gibidir; Console.WriteLine (examplevariable [2]); 'bu şekilde birden çok değişkeni – Mostafiz
geçirebilir Benim en son güncelleştirme yanıtımı görün, bu şekilde çok değişkenli de geçirebilirsiniz – Mostafiz