我有兩種類似的方法,在MainThreadDoWork
方法中,循環完成執行,不管OtherThreadWork
方法中的autoResetEvent.Set()如何。任何想法在這個AutoResetEvent實例中發生了什麼?AutoResetEvent發出信號之前觸發
AutoResetEvent autoResetEvent = new AutoResetEvent(true);
private int count = 10;
private void MainThreadDoWork(object sender, EventArgs e)
{
for (int i = 0; i < count; i++)
{
if (autoResetEvent.WaitOne())
{
Console.WriteLine(i.ToString());
}
}
}
private void OtherThreadWork()
{
autoResetEvent.Set();
//DoSomething();
}
編輯
下面是OtherThreadWork如何實際樣子。
private void OtherThreadWork()
{
if (textbox.InvokeRequired)
{
this.textbox.BeginInvoke(new MethodInvoker(delegate() { OtherThreadWork(); }));
autoResetEvent.Set();
}
else
{
// Some other code
}
}
東西是腥這裏,我懷疑實際的代碼有一些其他的問題。我在我的機器上運行了這段代碼,並阻止了對'WaitOne'的調用。 – Tudor 2012-02-21 11:19:54
@Tudor:我發佈了實際的otherThreadWork方法。有什麼想法發生了什麼?謝謝! – ABCD 2012-02-21 12:25:05
'MainThreadDoWork'正在UI線程上執行? – Tudor 2012-02-21 12:43:48