- 締切済み
Windows CE 5.0のマルチスレッド
Windows CE 5.0上で動作するプログラムで、シリアルの送受信処理をUIウインドウを作成し、別スレッドとしているのですが、メインスレッド(メインダイアログ)以外のスレッドだと、動作が不安定な事が起こりえると耳にされた方はいらっしゃいませんか? 実は、不定期ではありますが、↑のプログラムを走らせていると、フリーズしてしまうという障害が発生してまして、原因が不明です。 社内の人間から、CE 5.0の動作が不安定な事があるという事を聞き、ネットで色々と調べましたが、このような報告等を見付ける事が出来ません。 シリアルの送受信を、メインスレッド内で行うように改造を検討していますが、その為の情報を収集しているところです。(上司を説得する為) どなたか聞かれたか、ネットで見かけたという方、教えて下さい。 Windows CE 5.0 開発言語:VC++2005 プロジェクトの種類:スマートデバイス プラットフォームSDK:STANDARDSDK_500 以上、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kekyo0
- ベストアンサー率62% (5/8)
回答No.1
どんなコードか分からないのと、CEは未経験なのではっきりとは分かりませんが、気になることとしては、通信を受信しているスレッドから、受信結果を直接UIに表示(メッセージを送信)していませんか? WIN32 APIで異なるスレッドに属するユーザーインターフェイスにメッセージを送る場合は、PostThreadMessage経由で送る必要があります(そして、メッセージループで取り出してUIを更新する)。 #PostThreadMessageが必須ではありませんが、UIスレッド(メッセージループ)と同期をとるのは、このAPIを使うのが簡単でしょう。 外していたら御免なさい。
お礼
回答、ありがとうございます。 通信を受信しているスレッドからメインスレッド(メインダイアログ)へは、キューで受信データを渡しています。 PostThreadMessageについては、少し調べてみます。