我用一个进度条来显示算法的运行进度,当问题规模比较小时还能够正常指示,但当问题规模较大而导致算法运行需要耗费较多运算资源时进度条就无法显示了,感觉电脑就死在那似的,请问有什么办法能让进度条在计算机运行比较忙时依然正常指示呢??谢谢!!!

解决方案 »

  1.   

    使用多线程或者在首次将进度条 SetPos时 Invalidate
      

  2.   

    invalidate只需要在首次,接下来就都不需要了吗?
      

  3.   

    多线程,在线程中获取进度,设置一个定时器,定时把进度反应在progressbar上
    setpos不需要invalidate
      

  4.   

    在计算过程中加
    if (PeekMessage(&msg, NULL,  0, 0, PM_REMOVE))
        DispatchMessage(&msg);
    也是一个办法
      

  5.   


    在计算过程中加
    if (PeekMessage(&msg, NULL,  0, 0, PM_REMOVE))
        DispatchMessage(&msg);
    也是一个办法请问应该加在什么地方呢???
    例如while(条件)
    {
    计算过程
    }
      

  6.   

    是不是就直接这么写就行了呢???
    例如while(条件)
    {
    if (PeekMessage(&msg, NULL,  0, 0, PM_REMOVE))
        DispatchMessage(&msg);
        计算过程
    }
      

  7.   

    if (PeekMessage(&msg, NULL,  0, 0, PM_REMOVE))
        DispatchMessage(&msg);虽然这样可以,但是这样会使你的计算变得更缓慢,比如托动窗体或其它什么操作,
    比较好的是使用线程
      

  8.   

    while(条件)
    {
        if (PeekMessage(&msg, NULL,  0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        计算过程
    }或者,计算过程放在另一个线程中来实现。