C#实操文件锁来控制客户端启动次数

1.背景

在工作过程中遇到多次点击winform或wpf程序启动时,程序会启动多个实例。经过测试对比后,采用了文件锁来保证同一个窗体程序多次点击启动,只启动一个实例。

2.步骤

文件锁的程序:

 /// <summary>
 /// 文件锁
 /// </summary>
 public class FileLocks
 {
     static FileStream _lockFile;

     /// <summary>
     /// 检测实例唯一
     /// </summary>
     /// <returns></returns>
     public bool CheckSingleInstance()
     {
         //判断  MacOS系统自带实例检测, 只考虑 Windows和linux下的实例唯一 检测
         if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
         {
             return true;
         }

         var dir = AppDomain.CurrentDomain.BaseDirectory;
         if (!Directory.Exists(dir))
         {
             Directory.CreateDirectory(dir);
         }
         try
         {
             //Console.WriteLine("Check File Lock");
             _lockFile = File.Open(Path.Combine(dir, ".lock"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
             _lockFile.Lock(0, 0);
             return true;
         }
         catch (Exception ex)
         {
             //Console.WriteLine("error:" + ex.Message);
             return false;
         }
     }
 }
 internal class Program
 {
     static void Main(string[] args)
     {

         FileLocks fileLocks = new FileLocks();
         bool isSinge = fileLocks.CheckSingleInstance();
         Console.WriteLine($"是否第一次启动:{isSinge}");
         if (isSinge)
         {
             Console.ReadKey();
         }
         else
         {
             Console.WriteLine("之前已经启动过程序,即将关闭");
         }
     }
 }
3.结论

至此,结束。

猜你喜欢

转载自blog.csdn.net/wzl644/article/details/135600197