V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Umix
V2EX  ›  编程

MFC 或者 QT,单线程执行太久假死怎么办?

  •  
  •   Umix · 2017-05-22 17:35:18 +08:00 · 3783 次点击
    这是一个创建于 2739 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前是 C++ & MFC。

    一个函数,执行时间半分钟到几分钟不等。执行的时候就会假死界面不能移动。 目前查到的 MFC 是界面线程和辅助线程分开。把这个函数放到辅助线程里。但是我不太会 C++和 MFC,MSDN 上的文档也看不明白怎么用😂。

    现在这个函数长成:

    void xxxdlg::func()
    {
      //对 xxxdlg 类里的非 static 属性进行了操作和赋值
     do something here;
    }
    

    有 v 友能帮忙写个大致的 Demo 样子吗? MFC 或者 QT 下的都可以。QT 没用过,不过如果比较简便的话我就转型 QT 了😂。谢谢!

    3 条回复    2017-07-28 15:45:36 +08:00
    Leafove
        1
    Leafove  
       2017-05-22 18:08:17 +08:00
    前段时间用 QT 撸了一个比较文件夹区别的,刚好也遇到这个问题,希望能帮到你.
    第一次接触 QT 以前也少碰CPP,代码烂勿见怪.
    https://github.com/moonagic/QTMerger
    Umix
        2
    Umix  
    OP
       2017-05-22 19:09:26 +08:00
    @Leafove 看了一下,那 MFC 应该也是要新建一个 worker 类。考虑 qt 重写了😄 感谢
    beichao
        3
    beichao  
       2017-07-28 15:45:36 +08:00
    界面和耗时任务不能放到一个线程做,否则你的界面会被阻塞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1374 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.