第11講 Windowsアプリケーションソフト開発するための準備と実際
第4話 マルチスレッドの体験=MyForm1を起動する
まず、MyForm1を付け加えるために、
の青い帯のところで右クリックして、
追加→新しい項目の順で選びます。
名前が
と自動的に入りますので、
変更せずに追加します。
すると、
となりますが、これはVisual Studio Community 2017をいったん終了してから、
再度プロジェクトを開いてから、
を×をクリックして、
赤い囲いをダブルクリックすると、
となり問題が解消されます。
ときどき、
となりますが、同じようにすれば良いですし、
デバッグ(F5)ときには何も問題ありません。
次に、
緑の囲いをダブルクリックして、
MyFormの中でダブルクリックして、
MyForm.hのコードを開きます。
コードをコピペによって、
#pragma once
#include"MyForm1.h"
namespace My25スレッドマルチスレッド数独探索 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Threading;
/// <summary>
/// MyForm の概要
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm (void)
{
InitializeComponent();
//
//TODO: ここにコンストラクター コードを追加します
//
}
protected:
/// <summary>
/// 使用中のリソースをすべてクリーンアップします。
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private:
/// <summary>
/// 必要なデザイナー変数です。
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// デザイナー サポートに必要なメソッドです。このメソッドの内容を
/// コード エディターで変更しないでください。
/// </summary>
void InitializeComponent(void)
{
this->SuspendLayout();
//
// MyForm
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(284, 261);
this->Name = L"MyForm";
this->Text = L"MyForm";
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
this->ResumeLayout(false);
}
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^
e) {
Thread^ t1 = gcnew Thread(gcnew ThreadStart(f));
t1->Start();
}
static void f() {
Application::Run(gcnew MyForm1());
}
};
}
と変更します。ピンクが付け加えた部分です。
ここでF5を押してみましょう。
すると、
確かに、MyForm1が立ち上がります。
MyForm1を少しずらしてみると、
と確かに2つのスレッドがあることがわかります。
×で2つとも閉じか、
あるいは
赤い囲い(デバッグの中止)をクリックしてから、
Thread^ t1 = gcnew Thread(gcnew ThreadStart(f));
t1->Start();
を
Thread^ t1 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t2 = gcnew Thread(gcnew ThreadStart(f));
t1->Start();
t2->Start();
と変更すると、
と3つのフォームができます。
もう予想がつきますね。
Thread^ t1 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t2 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t3 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t4 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t5 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t6 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t7 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t8 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t9 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t10 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t11 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t12 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t13 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t14 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t15 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t16 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t17 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t18 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t19 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t20 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t21 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t22 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t23 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t24 = gcnew Thread(gcnew ThreadStart(f));
Thread^ t25 = gcnew Thread(gcnew ThreadStart(f));
t1->Start();
t2->Start();
t3->Start();
t4->Start();
t5->Start();
t6->Start();
t7->Start();
t8->Start();
t9->Start();
t10->Start();
t11->Start();
t12->Start();
t13->Start();
t14->Start();
t15->Start();
t16->Start();
t17->Start();
t18->Start();
t19->Start();
t20->Start();
t21->Start();
t22->Start();
t23->Start();
t24->Start();
t25->Start();
とすれば26個のフォーム
が立ち上がることが。
Thread^ t1 = gcnew Thread(gcnew ThreadStart(f1));
t1->Start();
によって新にスレッド(異世界=フォーム)が立ち上がることは、推測できますね。
この奇妙なコードはいったい何を意味しているのでしょうか。
次話で説明します。
第3話へ 第5話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ