protected void LinkButton1_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('正在清理中,请稍后!')</script>");//提示开始执行程序
System.Diagnostics.ProcessStartInfo myStartInfo = new System.Diagnostics.ProcessStartInfo();
myStartInfo.FileName = path + "mem.exe";
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo = myStartInfo;
//myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.Start();//开始执行程序
myProcess.WaitForExit(60000); //等待程序退出
Response.Write("<script>alert('清理成功!')</script>"); //提示执行结束
}
期望是 点击BUTTON后,跳出提示开始alert 然后执行程序,最好提示结束。
可是运行结果是 先执行完程序,然后同时跳出两个alert框,请问为什么会出现这种现象
------解决思路----------------------
alert是在客户端的浏览器上执行的,并不会中断服务端的代码,服务端只是把相关的脚本写到response中去而已。
服务器上的代码不应弹出对话框,对于你的要求,只能用Javascript来实现,用Javascript在客户端直接弹出对话框,然后访问某一个ASPx,在这个ASPX中完成你的清理工作并象Response输入完成的信息,客户端再接收到信息后再弹出对话框。
------解决思路----------------------
你在后台这样写是这样程序执行完成后,将alert()的两个警告框传输给前台呀
------解决思路----------------------
不要用winform的眼光去做webform
先理解前台代码和后台代码的关系,各自运行在什么地方
前台代码是js脚本,运行在浏览器上
后台代码运行在服务器上
你点击按钮后,IE会将页面提交到服务器,服务器代码执行完之后回发给IE重新显示,然后IE解析JS脚本再执行
------解决思路----------------------
这个问题看上去是asp.net板块的, 都用上脚本了.
因为从后台生成的HTML一般都有缓存的,总是到最后一次性全部传到浏览器,
楼主不妨试试在输出第一句的后面加上 Response.OutputStream.Flush(); 将已有内容先行传送到浏览器,
至于浏览器只收到一部分页面的时候,能不能显示对话框就不敢确定了.