启动Windows GUI应用程序时的后台作业

时间:2017-07-09 22:29:28

标签: c++ user-interface winapi

当我的Win32应用程序启动时,应执行LoadDB()并且至少需要10或20秒。在哪里执行LoadDB(),作为后台加载任务,以防止GUI窗口无响应?

是否可以这样做,但无需创建单独的thread? (这看起来很复杂,我想避免这种情况。)

注意:如果我在主消息循环中执行此操作:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_CREATE:
            LoadDB();
            ...

GUI将无响应。

1 个答案:

答案 0 :(得分:1)

创建一个线程并不像最初看起来那么复杂。

当您需要支持线程之间的交互时,事情可能相当复杂 - 但在这种情况下,您只需要启动某些内容,然后获得已完成的通知。那就是它。

因此,您要做的是编写一个调用loadDB()的小函数,然后(例如)调用PostMessage让应用程序的其余部分知道数据库已加载并可以使用。

真的没有那么多。说真的,它真的不复杂或复杂。