C# でアプリケーションの多重起動を禁止するコードを紹介します。
環境
WPF App .NET Core 3.1

使い方
App.xaml.cs の OnStartup関数をオーバーライドして、下記のコードの様に修正します。

using System.Reflection;
using System.Threading;
using System.Windows;
namespace WpfApp1
{
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// ミューテックス作成
var mutex = new Mutex(false, Assembly.GetExecutingAssembly().GetName().Name);
// ミューテックスの所有権を要求
if (!mutex.WaitOne(0, false))
{
MessageBox.Show("このアプリケーションは多重起動出来ません。");
Shutdown();
}
}
}
}
実行
多重起動のテストをするため、デバッグではなく実行ファイルを直接起動します。ビルド結果が保存されているディレクトリを開き、プログラムを起動します。

1つ目のプログラムを起動している状態で、2つ目のプログラムを起動させると、メッセージボックスが表示されて、多重起動が出来ない様になっています。

参考
アプリケーションの二重起動を抑止する - C#プログラミング