|
分類:[C#]
VS2019 C# .net framework4 フォームアプリを作成しています。
メインPGを起動する前に更新PGを起動させてファイルコピーを実行させています。
メインPGも更新対象となるので、別々にPGを作成しています。
やりたいことは、この一連の処理をより良くしたいです。
皆様にアドバイスいただきたいです。
処理の流れは、
1.FileCopy.exe 起動
2.ファイル更新判定
コピー元にアクセスできるか
3.ファイル更新実行
フォルダのファイルをコピー
4.Main.exe 起動
起動後にFileCopy.exeを終了
エラー発生時更新ができていなくてもMain.exeは起動させる
教えていただきたいことがいくつかあります。
1.FileCopy.exe の起動の仕方
フォーム画面を表示させています。
そしてその画面にあるボタンをクリックするとファイル更新が実行されます。
できればFileCopy.exeの起動画面は表示させたくありません。
ショートカットアイコンからPGを起動したとき、フォーム画面を非表示で起動させる方法があれば教えてください。
フォームのVisible と Hide を設定するとフォームは非表示になるのですが、ファイル更新が実行されません。
2.FileCopy.exe を終了させるタイミング
ファイル更新が実行された後にMain.exe を起動させ、FileCopy.exe を終了させたいです。
ファイル更新がエラーの時でもMain.exe は起動させたいです。
今は、Main.exe を起動させて5秒間待機させていますが、
起動したタイミングを検知してすぐにFileCopy.exe を終了させる方法はありますか?
よろしくお願いいたします。
public F00_CopyStart()
{
InitializeComponent();
}
private void F00_CopyStart_Shown(object sender, EventArgs e)
{
// 最前面表示
this.BringToFront();
//// 非表示設定
//Visible = false;
}
private void F00_CopyStart_Activated(object sender, EventArgs e)
{
//this.Hide();
}
private void btnCopy_Click(object sender, EventArgs e)
{
try
{
string CopyFldName = "コピー元のフォルダー";
string PasteFldName = "コピー先のフォルダー";
// 更新フォルダ確認(ファイルの有無)
if (!Directory.EnumerateFileSystemEntries(CopyFldName).Any())
{
//MessageBox.Show("更新ファイルはありません");
Main_Start()
Application.Exit();
return;
}
// ファイル更新実行
if (Set_CopyDirectory(CopyFldName, PasteFldName))
{
// 更新終了(正常)
//MessageBox.Show("更新終了しました");
}
Main_Start();
Application.Exit();
}
catch (System.Exception ex)
{
//MessageBox.Show("エラーが発生");
Main_Start();
Application.Exit();
}
}
private void Main_Start()
{
var proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = @"C:\Test\Main.exe";
proc.Start();
// 5秒待機
proc.WaitForExit(5000);
// 起動しているか確認する
if (proc.HasExited)
{
MessageBox.Show("終了しました。");
}
else
{
MessageBox.Show("終了していません。");
}
MessageBox.Show("終了しました");
}
|