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

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

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

Re[2]: フォームはマルチスレッド?


(過去ログ 36 を表示中)

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

■18758 / inTopicNo.1)  フォームはマルチスレッド?
  
□投稿者/ もんきっき (35回)-(2008/05/16(Fri) 08:04:09)

分類:[.NET 全般] 

初歩的な質問で申し訳ありません

■フォームの配置
左にTreeview
右にPanel

■記述したメソッド
Sub PANELMETHOD()handle treeview1.click
’ある程度時間のかかる作業で
’Panelに配置しているコントロールを更新します
End sub

■質問内容
treeviewをクリックして「PANELMETHOD」を実行中は
別の操作ができないのが当たり前と思っていましたが
「PANELMETHOD」を実行中にも別のコントロールのボタンを押せてしまいます

これは「マルチスレッド」になっているということになるのでしょうか

また「PANELMETHOD」を実行中にもう一度「PANELMETHOD」を発生させた場合
新しく「PANELMETHOD」が開始されますが
このとき、同じPanelオブジェクトにアクセスしますが
それまで稼動していた「PANELMETHOD」はプログラム上でどういう扱いになるのでしょうか

見た目上、途中でキャンセルされて、メソッドが終了しているように見えます

引用返信 編集キー/
■18760 / inTopicNo.2)  Re[1]: フォームはマルチスレッド?
□投稿者/ ネタ好き (268回)-(2008/05/16(Fri) 08:55:55)
No18758 (もんきっき さん) に返信
■記述したメソッド
Sub PANELMETHOD()handle treeview1.click
’ある程度時間のかかる作業で
’Panelに配置しているコントロールを更新します
End sub

によります。ここで新たなスレッドを作って処理をしているのならばマルチスレッドです。
引用返信 編集キー/
■18765 / inTopicNo.3)  Re[1]: フォームはマルチスレッド?
□投稿者/ まどか (513回)-(2008/05/16(Fri) 09:14:36)
> Sub PANELMETHOD()handle treeview1.click
> ’ある程度時間のかかる作業で
> ’Panelに配置しているコントロールを更新します
> End sub

これを、
> Sub PANELMETHOD()handle treeview1.click
Static count As Integer = 0
count += 1
Console.WriteLine("Start" & count.ToString)
・・・・・
Console.WriteLine("End" & count.ToString)
> End sub
にしてください。

112233・・・のようにならなければ、そのようになることをしているはずです。
引用返信 編集キー/
■18766 / inTopicNo.4)  Re[1]: フォームはマルチスレッド?
□投稿者/ T★M (1回)-(2008/05/16(Fri) 09:27:15)
No18758 (もんきっき さん) に返信
> ’Panelに配置しているコントロールを更新します

ここの更新処理が、Application.DoEvents()だったりしませんか?
引用返信 編集キー/
■18800 / inTopicNo.5)  Re[2]: フォームはマルチスレッド?
□投稿者/ もんきっき (36回)-(2008/05/16(Fri) 12:59:59)
No18766 (T★M さん) に返信
> ここの更新処理が、Application.DoEvents()だったりしませんか?

してました。
ちょっと調べると、Application.DoEvents()って結構危険な処理みたいですね
マルチスレッドを勉強します。
どうもありがとうございました。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -