当我的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将无响应。
答案 0 :(得分:1)
创建一个线程并不像最初看起来那么复杂。
当您需要支持线程之间的交互时,事情可能相当复杂 - 但在这种情况下,您只需要启动某些内容,然后获得已完成的通知。那就是它。
因此,您要做的是编写一个调用loadDB()的小函数,然后(例如)调用PostMessage
让应用程序的其余部分知道数据库已加载并可以使用。
真的没有那么多。说真的,它真的不复杂或复杂。