• 締切済み

Windows CE 5.0のマルチスレッド

kekyo0の回答

  • kekyo0
  • ベストアンサー率62% (5/8)
回答No.1

どんなコードか分からないのと、CEは未経験なのではっきりとは分かりませんが、気になることとしては、通信を受信しているスレッドから、受信結果を直接UIに表示(メッセージを送信)していませんか? WIN32 APIで異なるスレッドに属するユーザーインターフェイスにメッセージを送る場合は、PostThreadMessage経由で送る必要があります(そして、メッセージループで取り出してUIを更新する)。 #PostThreadMessageが必須ではありませんが、UIスレッド(メッセージループ)と同期をとるのは、このAPIを使うのが簡単でしょう。 外していたら御免なさい。

taka077
質問者

お礼

回答、ありがとうございます。 通信を受信しているスレッドからメインスレッド(メインダイアログ)へは、キューで受信データを渡しています。 PostThreadMessageについては、少し調べてみます。

関連するQ&A

  • Windows CEのセキュリティについて

    いつも お世話になっています m(_ _)m 今度 モバイルで使用できるPCを購入しようと考え中なのですが(機種は決まっていません) メールの送受信がメインでの使用となりそうですので 持ち運びの楽で小さい物を 希望しています。 そうすると Windows CE搭載機になると思います。 Windows CEには ノートンのようなアンチウイルスソフトはあるのでしょうか? それとも Windows CEに対して 悪さをするウイルスは 出回ってないのでしょうか? よろしく お願いします

  • マルチスレッドについて

    現在”猫でもできる”の87、88章を学んでおります。 まず87章でマルチスレッドの根本的なやり方を学びましたが、いきなり疑問が浮かびました。 _beginthread関数によりスレッドをスタートさせ、この関数で登録した関数内で_endthread関数を実行し終了させていることは分かります。 しかし_beginthread関数で登録した関数に引数を渡す処理がどの部分で行われているのかわかりません。 登録する関数はvoid型で引数はvoid*型でなければいけないことは分かったのですが、プログラムのどこを見てもこの登録した関数に引数を渡す処理が行われていません。 その辺の動作の説明を分かる方でいいのでよろしくお願いします。 そして88章では排他制御のマルチスレッドを行うプログラムの製作を行っているのですが、ちょっとした疑問が浮かびました。 EnterCriticalSection関数、LeaveCriticalSection関数ではさまれたプログラムは排他制御され他からアクセスされない。 この関数はこんな理解で良いんですかね? この理解で行くと、88章で説明していきますが、子ウィンドウを2つ作成しそれぞれのプロシージャ内で排他制御された関数をスレッドとしてスタートしています。 この2つのスレッドの動作についてですが、互いに排他制御関数が記述されているため、動作としてはまず左の子ウィンドウのスレッドが処理されている場合、右の子ウィンドウのスレッドは停止している。そして左の子ウィンドウのスレッドの排他制御が解放されたときに、右の子ウィンドウのスレッドが開始する。 そしてあるとき左の子ウィンドウのクライアントウィンドウ内で右クリックされた場合、その時点で排他制御されたスレッドが終了するのを待ち、終了したらcountを+1する。 こんな動作が行なわれていると理解してよいのでしょうか?

  • Windows Vista、7でのマルチスレッドのパフォーマンスの低下

    Windows Vista、7でのマルチスレッドのパフォーマンスの低下について WIN32で多数のスレッドが動作するプログラムを、Windows Vistaまたは7で動かすと、 Windows XPで動かす場合に比べて、10倍以上時間がかかります。 この原因として、何か考えられることはありますか?

  • Windows CE用のアプリケーションを開発することになりました。

    Windows CE用のアプリケーションを開発することになりました。 ベンダ提供のSDKを使用せずに、開発やデバッグを行う方法が分からず困っております。 開発環境としては、 ・Windowas XP SP3 ・VisualStudio 2010(言語はC#) 以上です。 ネットでも資料を色々探していますが、 開発環境については知識が少ないので難航しています。 ご教示よろしくお願いします。

  • Windows Platform SDKの入手

     タイトル通りなのですが、Windows Platform SDKを入手しダウンロードしてインストールしたいのですが、やり方等をネットで検索して調べているのですが、できません。お願いします。

  • Windowsメールが見えません 

    よろしくお願いいたします。 OSはビスタ、NTTのフレッツ光です。ブラウザはIE7です。ネットは見えますし、メールの送受信も可能ですが、送受信の数秒後に「動作を停止します。」  「問題が発生したため、プログラムが正しく動作しなくなりました。」と出てきます。 本文も見ることができません。 数日前からこうなりました。その前後にフレッツ光のセキュリティソフトをアップデートしてます。 その為かと思い、windowsの復元も試みましたが、メールソフトは復元されないのかどうか分かりませんが、やはり動作を停止しますと出ます。 同様に出た方、どうか解決策を教えてくださいませ。 保存メールもありますので困っています。

  • マルチスレッド[ VB.NET 2005 ]

    VB.NET 2005 VC++で作成した通信DLLをマルチスレッドで呼び出すプログラムを作成しています。 マルチスレッドについてご質問です。 ---------------------------------------------------------------- Private Sub ThreadMethod(ByVal aiIndex As UInt32) fSockInit() ← スレッドスタートなので別スレッドで動く End Sub '************************************************** ' フォームロード '************************************************** Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load wkThread(Index) = New Thread(New ThreadStart(AddressOf ThreadMethod)) wkThread(Index).Start() End Sub '************************************************** ' 接続ボタン押下 '************************************************** Private Sub btConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btConnect.Click fConnect() ← スレッドを指定して動かしたい End Sub '************************************************** ' パラメータ設定ボタン押下 '************************************************** Private Sub btParm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btParm.Click fParmSet() ← スレッドを指定して動かしたい End Sub ---------------------------------------------------------------- 上記の例では、fSockInitはスレッド別に動作しますが、fConnect、fParmSetはメインスレッドで動作するようになっています。 frmMain_Loadで作成したスレッドを指定(※1)して関数を呼び出すことは出来ないのでしょうか? ※1.「クリックイベント(メインスレッド)→実行するスレッドを指定→関数呼び出し→メインスレッドに戻す」の様に。。。

  • CE向け開発環境

    お世話になります。 WindowsXPで、開発したWinCE5.0向けソースを Windows2003SERVERの開発環境で開こうとすると、 「ユーザのデータストアから情報を取得中にエラーが発生しました。  XMLドキュメントには最上位の要素を指定する必要があります。」 「データストアに存在しないデバイスプラットフォームを参照している 為、プロジェクトは開けませんでした」 というメッセージがでて開けません。 開発環境詳細は、下記のとおりです。 VisualStudio 2005 VB .NET framework SDK 2.0 framework SDK 1.0 DB:SQLServer2005 開発環境のインストールは、XPと同様に入れなおしたのですが、 できません。 何か情報を知っている方がいたら教えて下さい! よろしくお願いします!!

  • SDKについて…新規ウィンドウ

    今SDK(WIN-API)でプログラムを作成しているんですが、メインプログラム(WinMain.cpp)の中のOKボタン(CreateWindow{…})を押したら別の新規ウィンドウ(WinSub.cpp)を呼び出したいのですが、やり方がいまいち分かりません。どなたかご助言お願いします。 WinMain.cpp はメインプログラム WinSub.cppはサブプログラム

  • Windows SDK for Windows VistaのDL

    Windows SDK for Windows VistaのDL Windowsプログラムで新たにSDKをDLしなくてはならなくなったのですが どこからDLすればいいのでしょうか? Windows SDKの日本語版をインストールしたいのですが、なかなか辿りつけません。 どこかにDLできるURLがあるはずなんですが、どこにあるのでしょうか? プログラムをビルドすると 「Show.CPP」と「Image.CPP」と「Music.CPP」がないとエラーメッセージが出る (.h系も)ので上記のSDKをDLすることになりました。 開発環境はVS2003.NETです。(OS XP 32bit)