break;\r
\r
case WM_ASYNC_DBASE :\r
+ // APIの仕様上ハンドルが登録される前にウィンドウメッセージが呼び出される可能性あり\r
+ RegistAsyncTableDbase((HANDLE)wParam);\r
// スレッド衝突のバグ修正\r
WaitForSingleObject(hAsyncTblAccMutex, INFINITE);\r
for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
break;\r
}\r
}\r
- // APIの仕様上ハンドルが登録される前にウィンドウメッセージが呼び出される可能性あり\r
- if(Pos == MAX_SIGNAL_ENTRY_DBASE)\r
- {\r
- for(Pos = 0; Pos < MAX_SIGNAL_ENTRY_DBASE; Pos++)\r
- {\r
- if(SignalDbase[Pos].Async == 0)\r
- {\r
- SignalDbase[Pos].Async = (HANDLE)wParam;\r
- SignalDbase[Pos].Done = 0;\r
- SignalDbase[Pos].ErrorDb = 0;\r
- if(HIWORD(lParam) != 0)\r
- {\r
- SignalDbase[Pos].ErrorDb = 1;\r
-#if DBG_MSG\r
- DoPrintf("##### SignalDatabase: error");\r
-#endif\r
- }\r
- SignalDbase[Pos].Done = 1;\r
-#if DBG_MSG\r
- DoPrintf("##### SignalDatabase: Done");\r
-#endif\r
- break;\r
- }\r
- }\r
- }\r
// スレッド衝突のバグ修正\r
ReleaseMutex(hAsyncTblAccMutex);\r
break;\r
#endif\r
CancelCheckWork = NO;\r
\r
+ // スレッド衝突のバグ修正\r
+ WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, 0);\r
+ UnRegistAsyncTable(s);\r
// FTPS対応\r
// Ret = closesocket(s);\r
Ret = closesocketS(s);\r
Ret = 0;\r
}\r
\r
- WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, 0);\r
+ // スレッド衝突のバグ修正\r
+// WSAAsyncSelect(s, hWndSocket, WM_ASYNC_SOCKET, 0);\r
if(BackgrndMessageProc() == YES)\r
CancelCheckWork = YES;\r
- UnRegistAsyncTable(s);\r
+ // スレッド衝突のバグ修正\r
+// UnRegistAsyncTable(s);\r
\r
#if DBG_MSG\r
DoPrintf("# Exit close");\r