未分類

C# スレッドを使ってアプリケーションを起動する

準備

1. プロジェクトのプロパティを開き、設定タブを開きます。
2. 名前に FileName と入力し、型は string を使用します。値は空欄とします。
3. プロパティを閉じます。

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にボタン (button2) を配置します。

サンプルコード (C#)

// 名前空間の追加
using System.Diagnostics;
using System.Threading;

// コード
private void button1_Click(object sender, EventArgs e)
{
  ThreadStart ts = new ThreadStart(CalcExec);
  Thread thread = new Thread(ts);
  thread.Start();
  
  button1.Text = "電卓実行中...";
  while (thread.IsAlive)
  {
    Application.DoEvents();
  }
  button1.Text = "button1";
}

private void CalcExec()
{
  Process ps = new Process();
  ps.StartInfo.FileName = "calc.exe";
  
  ps.Start();
  ps.WaitForExit();
}

解説

スレッドを作成して電卓を起動するメソッドを実行します。このメソッド内で電卓が終了するまで待機しています。通常は WaitForExit メソッドを発行すると、アプリケーションが固まってしまう状態になりますが、この場合には、別スレッドで処理していることなので問題ありません。メソッドが終了すると、スレッドも終了となり、スレッドの IsAlive プロパティが false に変わります。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類