MFCコントロールでスレッドセーフのものとそうでないものを知りたい


abc  2013-12-23 00:37:55  No: 73850

マルチドキュメントのMFCプロジェクトで、あるビュー生成したスレッド
内から、ビュー上のコントロールに変更を加えるという処理を書いている
のですが、リストコントロールは問題にならないのに、エディットボックス
に変更を加えるような処理を、スレッドから呼び出すとデッドロック的な
挙動になります。ほぼ同じタイミングで呼んでいます。

このこのから、コントロールによって、別スレッドからの変更に耐えられる
ものとそうでないものが有るようなのですが、これらについて詳しく知れる
サイト等があったらご教授願えれば幸いです。


オショウ  2013-12-23 03:58:29  No: 73851

検索すると・・・
MFCの場合、コントロールやダイアログへのアクセスは、すべて
スレッドセーフでは無い
と言うことのようです。

そうでない、と言うものも、たまたまうまく動作しただけで、
それが正しい動作では無いと思った方がよいようです。

ttp://msdn.microsoft.com/ja-jp/library/975t8ks0(VS.80).aspx

以上。参考まで


abc  2013-12-26 09:57:51  No: 73852

なるほど、そうでしたか。
ありがとうございます。

成功していたのは仮想リストコントロールとして使っているリストコントロールだったのですが、これはコンテナのデータを別途用意して、メッセージによって処理されるハンドラ内で内容に変更を加えていたため安全に動作していたようです。

合点がいきました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加