面向对象编程C#中经常应用到线程机制,有时候线程需要挂起,我们通常会使用Sleep函数。但是单纯用Sleep函数,会让整个程序无法做其它事情。为了解决这一问题,可以使用Application.DoEvents()函数。
Application.DoEvents()可以处理所有的当前在消息队列中的Windows消息。如果我们在编写一个串口接收功能时,需要线程挂起以等待数据的接收时,使用Sleep函数会使得窗体上的数据显示出现假死现象,而使用了Application.DoEvents()后,结束数据线程在等待的同时,已收到的数据也可以及时的更新到界面上。
/// <summary>
/// 线程挂起(int delay)
/// </summary>
/// <param name="delay">秒</param>
public void Delay(int delay)
{
try
{
while (delay > 0)
{
Thread.Sleep(1000);//线程挂起
Application.DoEvents();
delay -= 1;
}
}
catch (Exception)
{
}
}