繁体   English   中英

Thread.Sleep方法

[英]Thread.Sleep method

    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标签。 并尝试使用睡眠方法创建进度条来定期增加宽度。 我只能在循环结束时才能看到进度条。 只是想逐步查看宽度增加的进度条。 这是什么问题。请任何人帮助我。

您将无法使用服务器端代码来执行此操作。 这必须在客户端完成,最有可能是在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM