私はプログラムから2つの方法を得ました。thread.name私のコードで2つの異なる答えを与えてください
まず:
namespace FirstTheard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
}
private void button1_Click(object sender, EventArgs e)
{
Thread T1 = new Thread(new ThreadStart(DoWork));
T1.Name = "Primery Thread";
T1.Start();
}
private void DoWork()
{
var threadName = Thread.CurrentThread.Name;
for (int i = 0; i <= 20; i++)
{
Invoke(new Action(() =>
{
label1.Text += "ThreadName is-------"+threadName+"\n";
}));
Thread.Sleep(100);
}
}
}
}
出力:
のthreadNameがある-------
第二次スレッド:
namespace FirstTheard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
}
private void button1_Click(object sender, EventArgs e)
{
Thread T1 = new Thread(new ThreadStart(DoWork));
T1.Name = "Primery Thread";
T1.Start();
}
private void DoWork()
{
//var threadName = Thread.CurrentThread.Name;
for (int i = 0; i <= 20; i++)
{
Invoke(new Action(() =>
{
label1.Text += "ThreadName is-------"+ Thread.CurrentThread.Name + "\n";
}));
Thread.Sleep(100);
}
}
}
}
出力:
スレッド名は-------
なぜ2つの出力が異なるのですか?
'ので、' 'Invoke'''は別のスレッドでのコードのあなたの部分を実行します。 – tym32167