トップページ > 過去ログ > 記事閲覧
[VB.NET]Windows7で非同期Da_Play
日時: 2010/07/02 18:05
名前: いしい

AquesTalkのフリーWin版を使わせていただいています。
WindowsXP(.Netframework3.5)で作成したアプリを、
そのままWindows7(同fw)で動作させたところ、
マルチスレッドでキックしたAquesTalkDa_Playのところで、
正常終了(戻り値0)するのですが、音が再生されないことがあります。

何か回避策がないでしょうか?

ちなみにマルチスレッドは、「Backgroundworker」で実装しています。

Page: 1 |

Re: [VB.NET]Windows7で非同期Da_Play ( No.1 )
日時: 2010/07/07 10:38
名前: 管理人

AquesTalk.dllは一応スレッドセーフに作っているのですが・・・
なぜマルチスレッドで AquesTalkDa_PlaySync()でなく非同期タイプ(発声終了を待たずに関数から抜ける)のAquesTalkDa_Play()を使うのかわかりませんが、
発声が終了する前にスレッドが終了するなどして、H_AQTKDAハンドルが解放されたりしてませんか?
Re: [VB.NET]Windows7で非同期Da_Play ( No.2 )
日時: 2010/07/11 20:32
名前: いしい

管理人様、ご回答ありがとうございます。

PlaySyncで実装すると、PlaySyncで処理が返ってこなり、アプリケーション自体ハングアップしてしまうんです・・・。
それで、非同期タイプを使用するに至ります。。

非同期の場合、発声が終了する前に、
スレッドが先に終了してしまうのでしょうか?
もしそうだとすると、回避方法は、ありますか?
※ちなみに、明示的な解放は行なっていません。
Re: [VB.NET]Windows7で非同期Da_Play ( No.3 )
日時: 2010/07/12 18:42
名前: 管理人

>非同期の場合、発声が終了する前に、スレッドが先に終了してしまうのでしょうか?

これは、プログラムの書き方次第かと。

>PlaySyncで実装すると、PlaySyncで処理が返ってこなり、アプリケーション自体ハングアップしてしまうんです・・・。

まずは、こちらの原因を調べてからが良いかと思われます。
ちなみに、管理人はVBは全くわかりません
Re: [VB.NET]Windows7で非同期Da_Play ( No.4 )
日時: 2010/07/28 15:50
名前: いしい

考えられる対応をすべて試行したのですが、
何をしてもダメだったので、
Microsoftのサポートに問合せて、
パッチを適用したところ、
なんとか解決に至りました。
(まだ検証中ですが、今のところ安定しています。)
お騒がせしました。

『Windows 7 または Windows Server 2008 R2 で
オーディオをキャプチャおよび再生するアプリケーションが応答を停止する』
ttp://support.microsoft.com/kb/981679/ja

Page: 1 |