C#中多线程与DataGrid的绑定

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:01:38
俺有个多线程绑定DataGrid的问题,以下是代码:

Thread[] DateThread = new Thread[26];
int k;
for (k=0;k<26;k++)
{
ThreadCompany TC = new ThreadCompany();
TC.fd = new FillData(FillThisData);
TC.status = k;
TC.CurrentPageIndex = dgCompanies.CurrentPageIndex;
TC.pageSize = pageSize;
TC.CompanyList = CompanyList;
TC.ProcessSqlClause = ProcessSqlClause;
TC.SkillSqlClause = SkillSqlClause;
TC.LocationClause = LocationClause;
TC.KeywordSqlClause = KeywordSqlClause;
TC.User = User;
TC.Status = Status;
TC.SearchPortalId = SearchPortalId;
TC.sortColumn = sortColumn;
TC.sortDirection = sortDirection;
DateThread[k] = new Thread(new ThreadStart(TC.DataRetrive));
// DateThread[k] = new Thread(new ThreadStart(FillThisData));
DateThread[k].Start();
DateThread[k].Join();

}
现在的问

呵呵~!当然了~!DataBind()每次它都是绑定你的最后一个数据表,前面的被覆盖了~!呵呵!

你的想法不错,可是逻辑上还是有问题的~!
你是想让用多线程,绑定数据~!但是每一次用户请求,服务器都要响应~!服务器把你的线程处理完成以后才把结果发送到客户端,这样客户端不可能动态的看到你想展现的过程~!
如果你想实现你的想法的话,建议你学习一下AJAX技术~!用它可以做到

============================================
补充回答:
每一个完成绑定的线程都会把上次完成绑定线程绑定的数据覆盖~!

你的程序,最后一个开启的是DateThread[26].Start();
估计它应该也是最后一个完成!

你还是把这些数据存在一个临时表中,在最后一个线程结束时把数据绑定到DATAGRID上面吧!
你可以用一个变量统计结束线程的个数,当结束线程=26时,再对临时表绑定~!
AJAX在硬件上没有其它的要求,它只是一种技术,异步javascript通信