トップページ > 過去ログ > 記事閲覧
非同期読み込みでFileRead_read()が失敗する。
名前:sq 日時: 2012/04/04 18:16

通常の読み込みだとうまく読み込めるのですが、 非同期関数SetUseASyncLoadFlag()を呼んでから読み込むと失敗します。 FileRead_read()の戻り値は-1になります。 環境はWinXP、bcc5.5.1とVC2008EEです。 DxLibのバージョンは3.07dです。

Page: 1 |

Re: 非同期読み込みでFileRead_read()が失敗する。 ( No.1 )
名前:管理人 日時:2012/04/09 02:33

以下のようなプログラムでテストしてみましたが、FileRead_read は 0 を返しました #include "DxLib.h" #include <malloc.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int handle; int size ; void *buf ; int ret ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 同期でファイルを開く handle = FileRead_open( "Test1.bmp" ) ; // ファイルのサイズを取得してメモリを確保 size = FileRead_size( "Test1.bmp" ) ; buf = malloc( size ) ; // 非同期で読み込み SetUseASyncLoadFlag( TRUE ) ; ret = FileRead_read( buf, size, handle ) ; SetUseASyncLoadFlag( FALSE ) ; // 読み込み終了待ち while( ProcessMessage() == 0 && GetASyncLoadNum() != 0 ){} // ファイルを閉じる FileRead_close( handle ) ; // キー入力待ち DrawFormatString( 0, 0, GetColor( 255,255,255 ), "FileRead_read の戻り値は %d", ret ) ; WaitKey() ; // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; } SetUseASyncLoadFlag( TRUE ) ; を FileRead_open の前で呼んでいるということはないでしょうか? その場合ファイルを開く処理も非同期になりますので、非同期のファイルを開く処理が終わる前に FileRead_read を呼ぶと -1 が返ってきます
Re: 非同期読み込みでFileRead_read()が失敗する。 ( No.2 )
名前:sq(解決 日時:2012/04/09 19:18

まさにご指摘のとおりでした。 ご返答ありがとうございました。

Page: 1 |