背景
本人c#新手,最近公司要求做的一个程序,需要利用后台定时查询数据绑定到datagridview上,要求程序不能出现假死,给人友好的体验,于是想到利用创建另一个线程用于查询数据然后再把数据显示在datagridview上。程序完成的时候,在本机上代码调试也没出问题,很完美,但是到了实际的运用的时候,datagridview的界面出了问题,没有数据并且显示一个大红叉,并且还报错。之前还以为是电脑环境的问题,到后来才找到原因,是多线程使用不当的问题。下面是小弟的解决方法,目前已经没有发现这个情况。如果有人发现此方法不适用或者有更好的方法,请告知,谢谢!欢迎各位大神指导!
实现代码
/// <summary>
/// 查找数据(查询调用函数)
/// </summary>
private void searchData()
{
//开始查询数据
Thread th = new Thread(new ThreadStart(StartSearchData));
th.IsBackground = true;//设置为后台线程,否则即使主程序界面关闭了,程序也不会真正关闭,子线程会继续执行下去
th.Start();
}
bool IsReflash = false;//控制下面while 循环,实现定时刷新的效果,如果在查询开始的时候需要设置为true