none
请问非泵式等待是什么意思?怎么解决下图的问题呢? RRS feed

答案

  • 不在短时间内重新进入消息循环的等待,比如Sleep(120000)。

    初始化为STA套间的线程有阻塞性操作的时候会出现这个警告。你应该缩短等待时间,或者将耗时长的操作放到背景线程里面去。



    Visual C++ MVP

    2014年4月15日 18:07
    版主

全部回复

  • 不在短时间内重新进入消息循环的等待,比如Sleep(120000)。

    初始化为STA套间的线程有阻塞性操作的时候会出现这个警告。你应该缩短等待时间,或者将耗时长的操作放到背景线程里面去。



    Visual C++ MVP

    2014年4月15日 18:07
    版主
  • 你好,能不能给个具体例子,就是怎么缩短等待时间或者放到背景线程里面去?另外,两种方法哪个更好一些?谢谢!


    Work8862

    2014年4月16日 2:21
  • 我在网上找到了一个解决方法:按ctrl+alt+e,把"Managed Debugging Assistants"下的ContextSwitchDeadlock勾掉,不知道这方法是不是正确的解决方法或者是根本的解决方法,请指点一下,谢谢

    
    
    
    
    
    
    
    
    

    Work8862

    2014年4月16日 15:25
  • 这不能解决问题,只是干掉了问题发生之前的警告而已。

    具体解决方式取决于你的耗时操作。



    Visual C++ MVP

    2014年4月16日 16:05
    版主
  • 

    我不是专业的程序员,只是写一些我工作中能用到的小程序,所以对于STA套间之类的术语完全搞不懂,

    我的这个msdn浏览器好像也出问题了,贴不上代码,我这个程序就是读取很多个autodesk公司的dwg格式的

    文件,一条一条的读取里面的数据,找到我想要的那个图元.该怎么办呢?


    Work8862


    • 已编辑 Work8862 2014年4月17日 7:26
    2014年4月17日 7:25
  • 优化你的读取算法,使得一个函数的耗时尽可能降到一分钟以下。具体方法去autodesk的论坛问。

    如果算法无法优化,将读取工作分解为多个异步任务,例如使用StaTaskScheduler。



    Visual C++ MVP

    2014年4月17日 14:33
    版主