因为程序需要调搜狗地图的api返回一个在值,但是需要等3秒钟才能得到这个值。不能用sleep,因为它会彻底把程序停止,停止结束后依然需要等待3秒钟。
我用timer控件实现了这个功能,但是我需要把它做成一个类,请各位大神指教

解决方案 »

  1.   

    能把问题描述清楚么?一般来说你这个其实和sleep,timer,等xxx秒什么的没关系,只是你用了不合适(错误)的解决方法而已。比如,我很难理解"因为程序需要调搜狗地图的api返回一个在值,但是需要等3秒钟才能得到这个值"这句话的意思。
    就好像是在说:var data = api.Func();Console.WriteLine(data);
    你这里的data,直接运行的话,就是个null,必须要在Console.WriteLine之前磨蹭3秒钟才能有值?
    显然有问题啊
      

  2.   

    3秒钟的时间,为什么是3秒?  调用API到返回结果需要3秒? 
      

  3.   

    你不会用异步么??干嘛要在主线程sleep
      

  4.   

    说一种简单方法:
    开个线程去搜狗的api取值,
    工作线程和主线程可以采用ManualResetEvent来处理,
    主线程 manualEvent.WaitOne();
    工作线程完成后manualEvent.set()
      

  5.   

    用多线程,sleep它就不会把整个程序停了
      

  6.   

    干嘛要sleep,最差也要弹个什么加载的窗体出来,告诉用户正在取数据嘛。
      

  7.   

    你可以用个while循环啊 在while中判断等时间间隔TimeSpan大于3秒的时候跳出啊
      

  8.   

    异步执行,不要等,不要sleep,万一网络不好3秒没回来呢.
      

  9.   

    信号量。启用一个读线程,读完立马返回,启用另一个接收信号线程,内部等待,设置超时3秒,
    mutex.waitone(3000) 。
      

  10.   

    stream类的 BeginRead 和 BeginWrite 方法就是异步读写,楼主查下具体用法吧