アドバイスをお願いいたします。
やりたいこと:
(1)メインウィンドウで「計算始めるボタン」を押す。
(2)すると計算中には「実行中」の文字が別ウィンドウで立ち上がる。
(3)計算が終わると別ウィンドウが閉じる。
下記プログラムの不具合:
別ウィンドウで「実行中」の文字を出させたいが、文字部分が描画されない。
注意:
下記プログラムはAthlon3000+で1秒ほどかかります。
CPUが遅いマシンで試す場合は「//計算処理」部分のfor重みを軽減させて実行して下さい。
using System;
using System.Drawing;
using System.Windows.Forms;
//メインウィンドウ
public class MainForm : Form {
private Button button;
private Label label;
public MainForm() {
button = new Button();
button.Text = "計算GO!!";
button.Click += new System.EventHandler(button_click);
label = new Label();
label.Location = new Point(50,50);
label.Text = "メインウィンドウ!";
Controls.Add(button);
Controls.Add(label);
Text = "MainForm";
BackColor = Color.Blue;
}
static void Main() {
Application.Run(new MainForm());
}
//計算GOボタンをクリックした時の処理
private void button_click(object sender, System.EventArgs e) {
double z;
SubForm Sub = new SubForm();
Sub.Show();
//計算処理
for(int i=0; i<=500000000; i++)
z = double.MaxValue * double.MinValue;
Sub.Close();
MessageBox.Show("計算終了");
}
}
//計算中を通知するウィンドウ
public class SubForm : Form {
private Label label;
public SubForm(){
label = new Label();
label.Text = "実行中!";
label.Location = new Point(50,50);
Text = "計算中通知ウィンドウ";
BackColor = Color.Red;
Controls.Add(label);
}
}
No.2ベストアンサー
- 回答日時:
このような場合はマルチスレッドにするのが常套手段だと思います。
例えば、ボタン押した時にウインドウを作成表示し、計算スレッドを起動。計算スレッドの終了時にウインドウを閉じるのような動作にします。
逆に、Formの方を新規のスレッドにする手もありますが。
WIN32 API呼び出すより楽です。
[HOWTO] Visual C# .NET を使用してスレッドを作成する方法
http://support.microsoft.com/default.aspx?scid=k …
C#プログラミング入門 第7回:マルチスレッドプログラミング
http://www.stackasterisk.jp/tech/dotNet/csharp07 …
参考URL:http://www.stackasterisk.jp/tech/dotNet/csharp07 …
No.1
- 回答日時:
回答どうもありがとうございました。
大変参考になりました。
ただ、お手軽に「Application.DoEvents();」を上記プログラムのfor文中に入れたらとんでもなく処理時間がかかるようになってしまいました。
バックグランドで重い処理をしていなくても遅いです。
ループ回数の多いプログラムには向かないかもしれません。
Win32 APIを使ったプログラムの紹介もあったのですが、当方知識ではちょっと勉強が必要で、まだ試していません。
でも大変参考になり、回答感謝しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
食べられるかと思ったけど…ダメでした
「この煮物、だいぶ放置しちゃったけど大丈夫かな…」 「食べ物じゃないけど、なんか食べたらすごく美味しそうな気がする」
-
店員も客も斜め上を行くデパートの福袋
シュールを通り越して店員も客も斜め上を行くデパートの福袋に入ってそうなものを教えて下さい。 よかったらレビューもしてください。
-
C#で処理中画面を表示したい。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの再計算が反映されない件に...
-
65536は2の何乗なのでしょうか?
-
バッチファイルでウインドウを...
-
C言語についてです。 再帰を使...
-
排他的論理和 BCC(水平パリテ...
-
モジュラス103の計算とは何でし...
-
関数を使わないで日付の計算を...
-
Javaでのある数の小数点乗に...
-
エクセル以外で麻雀の成績を管...
-
切り上げたい
-
三菱シーケンサー works2 の日...
-
時間(ミリ秒を含む)の引き算
-
CRC8を教えてください
-
Excel VBAの残業時間の合計計算...
-
伝達関数のステップ応答→グラフ...
-
勤怠管理表を作成しています、...
-
順列のプログラムについて(VB)
-
Matlabでのinverse(逆関数)の...
-
チェックデジット計算できる関...
-
matlab計算での進捗状況を知りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
変化させるセルが変化しない
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
CとFORTRANの計算速度はどちら...
-
CASLIIで三角形の面積を求めた...
-
VBAで関数をつくる
-
傾いた四角形内の範囲の条件式
-
エクセルで特定のセルのみを任...
-
スレッド処理からダイアログを...
-
matlabで計算終了
-
なぜオーバーフローになるので...
-
VBでReplace
-
相性占いのソース
-
モジュロ
-
C言語 log実装
おすすめ情報