实现一个效果:
(B/S)后台代码一个方法BindDataList()
这个方法中通过某种途径获取数据,然后绑定到DropDownList1。
在程序执行这个方法的时候无论数据是否获取成功,获取多长时间,都不影响到页面上的其他任何操作。等数据异步获取好了就刷新页面绑定到DropDownList1。就是一个异步的效果,不想因为调用这个方法数据加载时间过长,导致整个程序都一直在等待,假设数据获取一个小时,那现在这一个小时内其他什么事都做不了,程序就卡这了,系统就像死掉了一样,就看着网页下面的进度条缓慢的爬行,如果这时再进行其他数据获取页面跳转类的操作,整个系统就死掉了,鬼知道要等到什么时候那边的数据加载什么时候能完,想放弃都放弃不了。我想通过下面类似方法可以实现异步效果,从而不影响系统其他操作private delegate void MylDelegate(); 
MylDelegatedelegate = new MylDelegate(BindDataList);
IAsyncResult asyncResult = delegate.BeginInvoke(LoadModelCompleted, modelDelegate);
//或者
Thread thread = new Thread(new ThreadStart(BindDataList));
thread.Start();
//或者用AJAX之类的方法实现异步以上方法我都试过了,没有得到理想的效果。向对异步加载数据这块比较熟悉的大大们求教!

解决方案 »

  1.   

    ajax 可以使客户端不需要等待异步线程 让服务端不需要等待绑定drowDownList 用AJAX就可以了
      

  2.   

    能贴一段AJAX异步调用方法的代码吗?我现在搞不清具体要怎么做
      

  3.   

     $.ajax({
            url: "/Account.ashx",
            type: "post",
            data: username
             dataType: 'json',
            success: function(result) { //这个是回调函数
                exist = result.d;//这里是页面处理完后的返回值     
             }
        });
      

  4.   

    问了这个问题说明你不懂B/S的模式,不懂为什么有Ajax,再看看吧,在B/S中除去AJAX,根本无法使用多线程
      

  5.   

    参考 http://dotnet.aspx.cc/article/d94323a7-e322-4ead-9f25-6e6629c8012e/read.aspx
      

  6.   

    意思是等别的都加载完了再加载那个DDL的数据吗?