问题描述
我现在执行一个循环dataset时候,由于数据量特别大。所以想在开始执行循环前告知“正在处理数据,请等待”,将这句话先打印出来,然后再执行循环。if(ds!=null){if(ds.Tables[0].Rows.Count>0){PlaceHolder1.Controls.Add(newLiteralControl("<strong>正在处理数据,请等待</strong>"));tishi(ds,PagePrintNext,PagePrintCount,PagePrintIndex,csId);//这个方法是对dataset的循环。}}
小弟不会线程,不知道如何先输出“正在处理数据,请等待”,然后再执行循环体。
解决方案
解决方案二:
你这个说法不符合web的基本原理。浏览器端与你的asp.net端程序的通讯是“一问一答”的,没有什么“两阶段的”流程。要想显示“请等待.....”,那么你在asp.net端程序被调用之前,在客户端就应该已经显示了。
解决方案三:
这个示例你可以参考一下,你可以在MSDN上看看Thread类的一些属性、方法,只有你真的了解这些底层的东西,写起来才容易些。https://msdn.microsoft.com/zh-cn/library/system.threading.thread.aspxinternalclassProgram{privateintinterval=200;privatestaticvoidMain(string[]args){Programp=newProgram();//创建一个线程实例ThreadnonParameterThread=newThread(p.NonParameterRun);//开始执行NonParameterRun()方法nonParameterThread.Start();///<summary>///不带参数的启动方法///</summary>publicvoidNonParameterRun(){for(inti=0;i<10;i++){Console.WriteLine("系统当前时间毫秒值:"+DateTime.Now.Millisecond);Thread.Sleep(interval);//让线程暂停,interval的单位是毫秒}}}
解决方案四:
引用2楼u012012237的回复:
这个示例你可以参考一下,你可以在MSDN上看看Thread类的一些属性、方法,只有你真的了解这些底层的东西,写起来.....
asp.net程序完全不能这样设计,b/s架构与console程序的基本原理就不同,因此它行不通。
解决方案五:
winform参考#2webform参考#1#3,替代方案是采用ajax(轮询、推送暂不考虑)