c# 怎样实现在加载大量数据的时候显示“正在加载,请稍等......" 加载完后再关闭

ONE-PIECE 2011-08-03 09:02:47
c# 怎样实现在加载大量数据的时候显示“正在加载,请稍等......" 加载完后再关闭
求解决代码。。。。。。。。。。。。。。
...全文
1527 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttllxx 2011-08-04
  • 打赏
  • 举报
回复
采用异步显示提示窗体
ONE-PIECE 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 baysos 的回复:]
web 还是winform?
[/Quote]

winform 谢谢!!!
baysos 2011-08-04
  • 打赏
  • 举报
回复
web 还是winform?
showjim 2011-08-04
  • 打赏
  • 举报
回复
比如
        void ShowMessage() { }
void HideMessage() { }
void LoadData()
{
try
{
//加载数据
}
finally { HideMessage(); }
}
            ShowMessage();
new Thread(new ThreadStart(LoadData)).Start();
ONE-PIECE 2011-08-04
  • 打赏
  • 举报
回复
继续顶!!!!!!!!!!!!
jy251 2011-08-03
  • 打赏
  • 举报
回复

invokeFunctionLoad invokeLoadDataSub = new invokeFunctionLoad(ExcelReader.getInstance().readExceFile);
AsyncCallback callback = new AsyncCallback(loadDataSubCompleted);

invokeLoadDataSub.BeginInvoke(result.formPath, "sheet1", HdrType.NO, callback, result);


invokeFunctionLoad 是我自己定义的delegate。
loadDataSubCompleted 是我自己写的异步执行完毕的执行方法。


private void loadDataSubCompleted(IAsyncResult ar)
{
AsyncResult ac = ar as AsyncResult;
invokeFunctionLoad invokeLoadDataSub = ac.AsyncDelegate as invokeFunctionLoad;

try
{
readResult = invokeLoadDataSub.EndInvoke(ar);
}
catch (Exception ex)
{
onsetmessageBox(ex.Message);
}
}


自己好好参透参透吧,查查什么是异步,什么是begininvoke,再什么是endinvoke
ONE-PIECE 2011-08-03
  • 打赏
  • 举报
回复
继续顶!!!!!!!! 我的是 Windows窗体程序!!!!
用线程有源码吗????????????????
求源码!!!!!!!!!!!!
Ny-6000 2011-08-03
  • 打赏
  • 举报
回复
统一执行如上方法.

具体你可以还要做细节调整才行.
Ny-6000 2011-08-03
  • 打赏
  • 举报
回复
按钮全部添加上:OnClientClick事件,

function ShowDoing() {
var loaddiv;
if (loaddiv = document.getElementById("loaddiv")) {
loaddiv.style.display = "block";
} else {
loaddiv = document.createElement("DIV");
loaddiv.id = "loaddiv";
loaddiv.style.position = "absolute";
loaddiv.style.zIndex = 1000;
loaddiv.style.display = "";
loaddiv.style.left = 0;
loaddiv.style.top = 0;
loaddiv.style.border = "1px solid gray"
loaddiv.style.background = "#ffffff"
loaddiv.style.padding = "5";
}

var scrollTop = 0;
if (top.document.documentElement && top.document.documentElement.scrollTop) {
scrollTop = top.document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = top.document.body.scrollTop;
}

var scrollWid = document.body.scrollWidth / 2 - 150;

loaddiv.style.left = scrollWid + "px";
loaddiv.style.top = (scrollTop + 50) + "px";

loaddiv.innerHTML = "<img src='/images/Doing.gif'><h>执行中,请稍等……</h>";
document.body.style.cursor = "wait";


var sWidth, sHeight;
sWidth = document.body.scrollWidth; //浏览器工作区域内页面宽度 或使用 screen.width//屏幕的宽度
sHeight = document.body.scrollHeight; //屏幕高度(垂直分辨率)


//背景层(大小与窗口有效区域相同,即当弹出对话框时,背景显示为放射状透明灰色)
var bgObj = document.createElement("div"); //创建一个div对象(背景层) //动态创建元素,这里创建的是 div
//定义div属性,即相当于(相当于,但确不是,必须对对象属性进行定义
//<div id="bgDiv" style="position:absolute; top:0; background-color:#777; filter:progid:DXImagesTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75);
//opacity:0.6; left:0; width:918px; height:768px; z-index:10000;"></div>

bgObj.setAttribute('id', 'bgDiv');
bgObj.style.position = "absolute";
bgObj.style.top = "0";
bgObj.style.background = "#ffffff";
bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity = "0.6";
bgObj.style.left = "0";
bgObj.style.width = sWidth + "px";
bgObj.style.height = sHeight + "px";
bgObj.style.zIndex = "10000";
document.body.appendChild(bgObj); //在body内添加该div对象

document.body.appendChild(loaddiv);
}
Ny-6000 2011-08-03
  • 打赏
  • 举报
回复
js代码实现即可.
zhlin118 2011-08-03
  • 打赏
  • 举报
回复
简单的就整个死的小窗体出来,根据执行过程输入消息。。。
动态的就多线程加载。。。
老毕 2011-08-03
  • 打赏
  • 举报
回复
链接:Basic Instincts:Updating the UI from a Secondary Thread

虽然是很早的东西,但直到今天仍然非常适用。
HDNGO 2011-08-03
  • 打赏
  • 举报
回复
BackgroundWorker可以实现的~
MOTA 2011-08-03
  • 打赏
  • 举报
回复
B/S里面多线程貌似要出错。

你这个是WINFORM么?

如果是WINFORM的确就是那样的
hch126163 2011-08-03
  • 打赏
  • 举报
回复
多线程!

程序启动前 显示“正在加载,请稍等......"

线程执行完毕,隐藏
ONE-PIECE 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sbwwkmyd 的回复:]
线程加载数据执行完了以后通知一下主线程
[/Quote]
有没有具体的源码!!!!!!!!!!
showjim 2011-08-03
  • 打赏
  • 举报
回复
线程加载数据执行完了以后通知一下主线程
ONE-PIECE 2011-08-03
  • 打赏
  • 举报
回复
继续顶!!!!!!!!!!!!!
taolinsen 2011-08-03
  • 打赏
  • 举报
回复
web上不做解释。
Winform我是这样解决的,先放一个Lable在列表所在容器的中央,Text=“正在加载数据,请稍候”,同时开启线程加载数据,隐藏列表。一旦数据加载完成,隐藏Lable,显示列表。

110,555

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧