使用线程时,使用'invoke'来避免'Cross Thread'(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) 之间'
如果我们在'timer event'中检查后将处理的数据分散在'thread'中,而不使用'invoke'或其他方法,会不会有问题?(我们听说在打印“线程”内处理的数据时,为了避免“跨线程”,使用额外的“定时器对象”分散“定时器事件”中的数据已经很频繁了,因为它既无益也无害)。