スレッドを使用する場合、「クロススレッド」を回避するために「invoke」が使用されます(1)
ただし、「CrossThread」を回避するために「タイマーオブジェクト」が使用されている場合があります(2)
このように(例えば)
public partial class Form1 : Form
{
private bool bCheckState = false;
public Form1()
{
InitializeComponent();
}
//Button Click
private void btnWork_Click(object sender, EventArgs e)
{
Thread m_Thread = new Thread(new ThreadStart(Work));
m_Thread.Start();
}
private void Work()
{
bCheckState = true;
// not use invoke
}
private void timer_Tick(object sender, EventArgs e)
{
if (bCheckState)
{
//tbxDisplay is winform's textBox control - printing data
tbxDisplay.Text = bCheckState.ToString();
bCheckState = false;
}
}
}
どちらがより効果的ですか?「(1)と(2)の間」
'invoke'または他のメソッドを使用せずに、'timerイベント'でチェックした後、'thread'内で処理されたデータを分散させると問題になる可能性がありますか?(「スレッド」内で処理されたデータを印刷するときに「クロススレッド」を回避するために、「タイマーイベント」でデータを追加の「タイマーオブジェクト」とともに分散させることは、有益でも有害でもないため、頻繁に使用されていると聞きました)。