C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: vc++.Netでのメッセージの処理について


(過去ログ 113 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■66811 / inTopicNo.1)  vc++.Netでのメッセージの処理について
  
□投稿者/ 遠山 (3回)-(2013/05/29(Wed) 11:18:58)

分類:[.NET 全般] 

vc++.Netでのメッセージの処理についてお聞きしたいことがあります。

マルチスレッドではなく単一のスレッドである手続きで長時間の
処理を行っていますがフォームのボタンクリック等のイベント処理はできませんが、

長い時間手続きを行っている処理でメインの画面のコントロールをリフレッシュ
させていますが、メインのメッセージ処理で処理が止まってしまうようなことは
あるのでしょうか?

手続きを行っている処理の実行が途中で止まってしまいます。
対応策はあるのでしょうか?宜しくお願いします。

引用返信 編集キー/
■66814 / inTopicNo.2)  Re[1]: vc++.Netでのメッセージの処理について
□投稿者/ 遠山 (4回)-(2013/05/29(Wed) 12:37:23)
いわゆる応答無し状態でしょうか?少し調べてみます。
何かご存知のかたいましたらご教授お願いします。

引用返信 編集キー/
■66815 / inTopicNo.3)  Re[1]: vc++.Netでのメッセージの処理について
□投稿者/ とっちゃん (117回)-(2013/05/29(Wed) 14:09:12)
とっちゃん さんの Web サイト
No66811 (遠山 さん) に返信

> 長い時間手続きを行っている処理でメインの画面のコントロールをリフレッシュ
> させていますが、メインのメッセージ処理で処理が止まってしまうようなことは
> あるのでしょうか?
>
長い手続とはどういうものでしょうか?
その最中に画面のリフレッシュを行うとはどういう処理を行っていますか?

ただ、どういう形をとっていてもその長い時間手続きを行っているのが
UIスレッドのどこかの呼出しであれば、その間メッセージ処理は行われません。
(自分がその長い処理中に能動的にメッセージを処理するようにプログラムを書いている場合を除き)


> 手続きを行っている処理の実行が途中で止まってしまいます。
> 対応策はあるのでしょうか?宜しくお願いします。
>
現代風なら作業用スレッドで長い時間がかかる処理を行い
UIスレッドへの負荷を減らすのが定番です。

構造上どうしてもUIスレッドで処理しなければならない場合で
プログラムが煩雑(あるいは、技量的な問題でスレッド化できないなど)になるのなら
メッセージを時折処理する(DoEventsなど)ことで負荷低減とすることはできます。


参考程度ですが
http://codezine.jp/article/corner/384
も張っておきます(APIレベルでの様々な応答なしに対するテクニックです)。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -