线程.睡眠的方法
本文关键字:方法 线程 | 更新日期: 2023-09-27 18:07:06
for (i = 0; i < 10; i++)
{
len = (i*30).ToString();
System.Threading.Thread.Sleep(200);
progressbar.Style.Add("width", len + "px");
txtlbl.InnerHtml = len+'%';
System.Threading.Thread.Sleep(200);
//htmlDivControl.Style["width"] =Convert.ToString("10");
//Item("width") = i.ToString + "px"
}
这是我的代码背后的代码在c#中。我在html中创建了一个div标签。并尝试通过使用sleep方法创建进度条来周期性地增加宽度。我只能在循环完成结束时看到进度条。只是想看到进度条一步一步地增加宽度。这里的问题是什么?
您将无法使用服务器端代码来完成此操作。这必须在客户端完成,最有可能在javascript中。
想想ASP。NET作为构建一个大字符串被发送到浏览器。当页面经历它的生命周期时,你所做的一切都只是构建一个字符串,它在最后被发送到浏览器。因此,无论代码在Prerender
事件完成时离开页面的状态是什么,它都将被传递给浏览器。这就是为什么你只能看到进度条的"最终"状态。
这是一个链接到一个jQuery进度条,你应该可以使用它作为一个起点。http://jqueryui.com/progressbar/
您正在尝试使用服务器端代码来执行将在客户端执行的操作。服务器端代码将简单地向客户端(即浏览器)输出静态HTML,并停止执行。你可以在渲染之前操作HTML;但在此之后,您需要使用Javascript(如果它是客户端语言)来执行这种对页面的交互式操作。
你的代码基本上是在页面被提供给客户端之前执行,因此你只能看到这个操作的最终结果。
在OnLoad
事件(即在客户端加载页面之后)上,您可以使用Javascript执行此c#代码的变体来实现该效果。但是,使用jQuery来完成这个操作会简单得多。
正如其他人提到的,ASP技术在服务器上进行一些处理,并向客户端发送一个HTML响应。因此,您需要添加客户端Javascript代码来更改UI。
这里有一种方法(使用JQuery),您可以尝试一下(Fiddle: http://jsfiddle.net/5arx/g8kF9/)。基本上,它使用setInterval
函数每x毫秒执行一些代码。
<div class='expando' id='expando'>
</div>
<p id='pOut'>0s</p>
var msg = 20;//global
setInterval(
function ()//the code that will be executed
{
$('#pOut').text(msg++ + 's');
$('#expando').css('height', msg * 1.5);
}
, 1000);//interval time in milliseconds