アドバイスをお願いいたします。
やりたいこと:
(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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
「キャンセル」ボタン付きの処理中ダイアログ
C言語・C++・C#
-
-
4
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
5
C#で、ある条件でFormが自動で閉じるプログラム
C言語・C++・C#
-
6
フォームの再読み込み
Visual Basic(VBA)
-
7
C# 配列の変数宣言について。
C言語・C++・C#
-
8
C# ログイン画面からメイン画面への画面遷移について
C言語・C++・C#
-
9
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
10
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
11
C#で処理中画面を表示したい。
その他(プログラミング・Web制作)
-
12
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
13
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
14
C#でExcelのシートを選択する方法
その他(プログラミング・Web制作)
-
15
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
16
ラベルの文字列の長さが変わったときに、ラベル位置を自動で変更する方法
C言語・C++・C#
-
17
C# マルチディスプレイにて、フォームの初期位置をCenterScre
その他(プログラミング・Web制作)
-
18
”パラメータ値を TextBox から String に変換できません
SQL Server
-
19
ボタンクリックイベント 重複防止について
C言語・C++・C#
-
20
C# ReadOnlyのTextBoxで
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
Visual C++でdebugとreleaseで...
-
排他的論理和 BCC(水平パリテ...
-
Javaでのある数の小数点乗に...
-
★PHP★平日、休日の区別はできま...
-
素数を自動的に作る
-
骨折リスク評価のFRAXについて...
-
C言語 log実装
-
VBAで関数をつくる
-
C言語初心者。静磁場の計算。台...
-
エクセルで特定のセルのみを任...
-
60進数の四則計算
-
傾いた四角形内の範囲の条件式
-
数値計算の高速化 (cos, sin, exp)
-
C言語で電卓を作成する。修正お...
-
関数電卓をc言語でつくりたいの...
-
変化させるセルが変化しない
-
prolog計算
-
CRC8を教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報