/**////<summary> /// 从这里开始运行 ///</summary> [STAThread] staticvoid Main() { Process instance = RunningInstance(); if (instance ==null) { //没有实例在运行 WeatherApp appInstance =new WeatherApp(); appInstance.StartMainGui(); } else { //已经有一个实例在运行 HandleRunningInstance(instance); } } 确保只有一个实例#region 确保只有一个实例 publicstatic Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName (current.ProcessName); //遍历与当前进程名称相同的进程列表 foreach (Process process in processes) { //Ignore the current process if (process.Id != current.Id) { //Make sure that the process is running from the exe file. if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) { //Return the other process instance. return process; } } } returnnull; } privatestaticvoid HandleRunningInstance(Process instance) { MessageBox.Show("该应用系统已经在运行!","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information); ShowWindowAsync(instance.MainWindowHandle,1); //调用api函数,正常显示窗口 SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端。 } [DllImport("User32.dll")] privatestaticexternbool ShowWindowAsync(System.IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] privatestaticexternbool SetForegroundWindow(System.IntPtr hWnd); #endregion