private Thread _threadQuery;//定义一个线程
在load事件里加载线程
private void Page_Load(object sender, EventArgs e)
{
BenginBindAllNetTread();//线程创建方法
}
线程的Start()方法表示线程已准备好,执行时间由CPU决定
private void BenginBindAllNetTread()
{
if (_threadQuery != null)
{
_threadQuery.Abort();
_threadQuery = null;
}
if (_threadQuery == null)
{
_threadQuery = new Thread(new ThreadStart(dgvThreadBind));
_threadQuery.Start();
}
}
在线程中调用另一个线程或者访问主线程的控件,必须使用委托
delegate void InvokeDelegate();//定义一个委托
private void dgvThreadBind()
{
try
{
while (!this.IsHandleCreated)
{ }
if (this.IsHandleCreated)
{
InvokeDelegate beginProcess = delegate()//匿名委托
{
ShowLoadMsg("正在加载数据");
};
this.BeginInvoke(beginProcess);//在创建控件的基础句柄所在线程上异步执行指定委托
}
tempCusList = CustomerServiceBusiness.BindAllNet();//执行一般方法
}
catch (Exception ex)
{
MessageUtility.ShowWarning("绑定网点信息失败");
LogManageBusiness.WriteLog(ex, this.GetType().FullName, "dgvThreadBind");
// return 0;
}
EndQueryDataTread();
}
private void EndQueryDataTread()
{
try
{
while (!this.IsHandleCreated)
{ }
if (this.IsHandleCreated)
{
InvokeDelegate endProcess = delegate()
{
BindAppSiteData();
CloseLoadMsg();
tb_OrderNo.ReadOnly = false;//访问主线程的控件必须写在委托里
};
this.BeginInvoke(endProcess);
}
}
catch
{
}
if (_threadQuery != null)
{
_threadQuery.Abort();
_threadQuery = null;
}
}