當使用螺紋,「調用」被用來避免「跨線程」(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_Tick'和'Work()' – gideon 2012-01-16 07:16:22
'effective'是什麼意思? – 2012-01-16 07:17:30
也看看使用SynchronizationContext而不是在這裏調用Invoke http://lostechies.com/gabrielschenker/2009/01/23/synchronizing-calls-to-the-ui-in-a-multi-threaded-application/ – sos00 2012-01-16 07:40:20