我有以下 Windows 窗体代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
new Thread(SampleFunction).Start();
}
void SampleFunction()
{
for (int i = 0; i < 10; i++)
{
if (textBox1.InvokeRequired == true)
textBox1.Invoke((MethodInvoker)delegate { textBox1.Text += "HI. "; });
else
textBox1.Text += "HII. "; // Sometimes hit on first pass of the loop.
Thread.Sleep(1000);
}
}
使用断点调试上述代码时,我观察到非调用所需的路径在第一次通过时被命中,但大约每 10 次运行只有一次。我很惊讶,因为代码在一个单独的线程上,而且我希望InvokeRequired
始终如此。有人可以阐明吗?