トップページ > 記事閲覧
非同期読み込み完了のコールバック関数が呼び出されたときにハンドルが有効かどうかを確認したい
名前:紺帽子 日時: 2021/10/06 20:18

ライブラリバージョン3.22eを使用しています。 SetASyncLoadFinishCallback関数を使用してコールバック関数が呼び出されたタイミングでハンドルの有効性を確認したいのですが、 CheckHandleASyncLoad関数やGetHandleASyncLoadResult関数が0を返してきます。 コールバック関数が呼ばれた時点で成功/失敗またはハンドルが有効/無効を確認することは可能でしょうか? // 非同期読み込み完了時にコールバックする関数 void Callback(int Handle, void *Data) { // コールバックの時点では、読み込み失敗してても0を返してくる int c = CheckHandleASyncLoad(Handle); int r = GetHandleASyncLoadResult(Handle); printfDx("%d %d %d\n", Handle, c, r); }
メンテ

Page: 1 |

Re: 非同期読み込み完了のコールバック関数が呼び出されたときにハンドルが有効かどうかを確認したい ( No.1 )
名前:管理人 日時:2021/10/08 01:26

すみません、本来は GetHandleASyncLoadResult で成功/失敗が取得できる 筈なのですが、バグっていて取得できない状態になっています 対応に若干時間が掛かりそうなので申し訳ありませんが数日( 早ければ 本日の夜 )お待ち下さい m(_ _;m
メンテ
Re: 非同期読み込み完了のコールバック関数が呼び出されたときにハンドルが有効かどうかを確認したい ( No.2 )
名前:紺帽子 日時:2021/10/08 19:07

コールバック関数は非メインスレッドから呼ばれることに気づきました。 そしてコールバック関数内でDXライブラリ関数を呼ぶことは基本的に安全ではないのですね。 > 対応に若干時間が掛かりそうなので申し訳ありませんが数日( 早ければ > 本日の夜 )お待ち下さい m(_ _;m ご多忙のところ申し訳ありません。 急ぎませんのでお手すきの際で構いません。
メンテ
Re: 非同期読み込み完了のコールバック関数が呼び出されたときにハンドルが有効かどうかを確認したい ( No.3 )
名前:管理人 日時:2021/10/09 00:20

想像よりも早く作業が終わりました よろしければこちらの GetHandleASyncLoadResult が正常に機能する修正版をお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 非同期読み込み完了のコールバック関数が呼び出されたときにハンドルが有効かどうかを確認したい ( No.4 )
名前:紺帽子(解決) 日時:2021/10/09 22:42

GetHandleASyncLoadResult関数をコールバック関数内で使用して、非同期読み込み失敗時に-1となることを確認しました。 対応ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存