非同期処理の完了を待つには,DBRDatabaseクラスとDBRResultSetクラスのWaitForDataSourceメソッドを使用します。このメソッドが呼び出されると,メソッドが呼び出されたオブジェクトで実行中の非同期処理すべてが終わるまで待ちます。
if(pDB1->WaitForDataSource()) // 非同期処理が終わるまで待つ
{
printf("非同期で要求した処理が終了しました");
}
非同期処理の完了を確認するには,InWaitForDataSourceメソッドを使用します。
DBRDatabaseクラスの場合,Databaseオブジェクトに関係するすべてのResultSetオブジェクトのアクセス完了を意味し,DBRResultSetクラスの場合,単独のResultSetオブジェクトのアクセス完了を意味します。
また,DBRDatabaseクラスのInExecuteメソッドでも確認することができます。
例えば,DatabaseオブジェクトのExecuteDirectメソッドの処理は終了していても, ResultSetオブジェクトのExecuteメソッドが実行中ならば,InWaitForDataSourceメソッドはTRUEを返します。
if(pDB1->InWaitForDataSource())
{
printf("非同期処理要求が残っています");
if(pDB1->WaitForDataSource(10000)) // 10秒待つ
{
printf("非同期処理がすべて終了しました");
}
else
{
printf("10秒経ちましたが,非同期処理継続中です。
終了までお待ちください。");
pDB1->WaitForDataSource(); // 非同期処理が終わるまで待つ
}
}
非同期処理の完了を待つには,各クラスのWaitForDataSourceメソッドを使用します。このメソッドが呼び出されると,メソッドが呼び出されたオブジェクトで実行中の非同期処理すべてが終わるまで待ちます。
if(pStatement->WaitForDataSource())
// 非同期処理が終わるまで待つ
{
printf("非同期で要求した処理が終了しました");
}
非同期処理の完了を確認するには,DBConnectionオブジェクトのInWaitForDataSourceメソッドや各クラスのInExecuteメソッドを使用します。これは, DBConnectionクラスのメソッドに限らず,どのクラスのメソッドであっても,そのDBConnectionオブジェクトから生成されたオブジェクトのメソッドでデータベースアクセス中であれば,TRUE(非同期処理継続中)が返ります。
例えば,DBConnectionオブジェクトのExecuteDirectメソッドの処理は終了していても, DBStatementオブジェクトのExecuteメソッドが実行中ならば,InWaitForDataSourceメソッドはTRUEを返します。
if(pConnect->InWaitForDataSource())
{
printf("非同期処理要求が残っています");
if(pConnect->WaitForDataSource(10000)) { // 10秒待つ
printf("非同期処理がすべて終了しました");
} else {
printf("10秒経ちましたが,非同期処理継続中です。
終了までお待ちください。");
pConnect->WaitForDataSource()
//非同期処理が終わるまで待つ
}
}