none
使用asp.net回调ICallbackEventHandler实现真正的进度条 RRS feed

  • 问题

  • 您好,

      我想使用asp.net回调机制实现进度条,请问要如何实现呢, 我后台执行的是一个批量生成缩略图的操作,是一个循环,比较耗时。不知道代码怎么设计。我目前主要代码是这样的

     public void RaiseCallbackEvent(string EventArgs)
        {
            AspEventArgs = EventArgs;
            DataContext ft = new DataContext();
            var result = from p in ft.Product select p;
            float count = 0;
            float _total = result.ToList().Count;
            string str = "";
            foreach (Model.Product p in result)
            {
                if (p.ProductBigImages.Contains("/"))//判断是否包含目录
                {
                    string _catalog = p.ProductBigImages.Substring(0, p.ProductBigImages.LastIndexOf('/') + 1);
                    if (System.IO.Directory.Exists(Server.MapPath("~/bmzcache/" + _catalog)) == false)//如果不存在就创建文件夹
                    {
                        System.IO.Directory.CreateDirectory(Server.MapPath("~/bmzcache/" + _catalog));
                    }
                }
                if (File.Exists(Server.MapPath("~/BigImages/" + p.ProductBigImages)))
                {
                    //System.Threading.Thread.Sleep(0);
                    MySecurity.Fileupload.MakeThumbnail(Server.MapPath("~/BigImages/" + p.ProductBigImages), Server.MapPath("~/bmzcache/" + p.ProductBigImages), 160, 160, "W", "jpg");
                }
                count++;
                return ((count / _total) * 100).ToString(); //这里要怎么赋值或者返回?
            }
        }
        public string GetCallbackResult()
        {
            int i = Convert.ToInt32(AspEventArgs);
            i++;
           // Response.Write("aaa");
            return i.ToString();
        }

    前台的设计就是用一个js定时器每隔一秒执行回调 <%= ClientScript.GetCallbackEventReference(this, "arg", "GetMsgBack",null) %>;  请问我的后台代码要如何改造呢? 希望老师能帮我具体的写下代码,非常非常感谢!!!

    2013年5月27日 1:42

答案