首页 > 其他 > 详细

连续点击按钮请求数据时如何进行资源优化

时间:2014-04-17 08:50:31      阅读:479      评论:0      收藏:0      [点我收藏+]

按钮点击进行数据查询,数据响应却或多或少会有延迟,这方面原因可能是代码优化做的不好,可能是网络延迟等等。如果将查询函数写在主线程上,那么一旦延迟,页面将会假死,给人不好的感觉,如果将查询函数放在单独的线程中,或许可以解决页面假死的问题,但是暴露新的问题是,查询按钮将会一直为可点状态(这里我们不考虑按钮状态置为不可用)

如果按钮一直可以点击,线程中的请求就不会间断,那么服务器资源压力也会增大,如何减轻这方面问题呢?

第一种方法,也是最常用的一种方法,做一个bool类型的字段去判断,如果第一次点击按钮bool字段设置为true,线程中进行数据查询,响应数据后再将字段改为false。如果第一次按钮请求还未结束,再去点击按钮,判断一下,如果字段值为true,就不去执行请求操作。

bool flag = false;

void QueryClick(object sender,EventArgs e)

{

       if(!flag ){

       Thread queryThread = new Thread(new ThreadStart(Query));

       queryThread .Start();

       }

 

}

void Query()

{

      //查询数据

        flag = false;

}

 

第二种方法,在点击按钮的时候记录当前时间,然后去监听它,如果两次点击按钮间隔500毫米内,就不去请求数据,反之则请求。

DateTime? queryTime = null;

Thread queryThread = null;

ManualResetEvent wait = new ManualResetEvent(false);

void QueryClick(object sender,EventArgs e)

{

         queryTime  = DateTime.Now;

         wait.Set(); 

         if(queryThread ==null)

    {

      queryThread = new Thread(new ThreadStart(Query));

           queryThread .Start();

    }

}

 

void Query()

{

      While(true){

      wait.Reset();

      Thread.Sleep(500);  

      DateTime tmpTime = DateTime.Now;

      TimeSpan ts = (TimeSpan)(tmpTime -queryTime );

      if(ts.TotalMilliseconds>500) //查询数据

      wait.WaitOne();

      }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

连续点击按钮请求数据时如何进行资源优化,布布扣,bubuko.com

连续点击按钮请求数据时如何进行资源优化

原文:http://www.cnblogs.com/aimiaomiao/p/3669145.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!