只运行一个应用程序的错误代码的分析
应用程序 分析 一个 运行 错误代码
2023-09-11 14:14:22 时间
错误代码一
//单独单开exe的时候,是没有问题的
//此代码的问题在于,打开两个或多个独立的VS程序后,并且这些VS打开的项目的名字相同的话,会有多个进程主模块名字相同,但是进程ID不同的程序 导致无法启动实例【一个程序都打不开】 Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); OperationLog.Instance.WriteLog( string.Format("进程Id={2} 进程名字 = {0},进程主模块的名字 = {1}", current.ProcessName, current.MainModule.FileName, current.Id), LogType.UI); OperationLog.Instance.WriteLog(string.Format("进程名字={0}的进程数量 = {0}", processes.Length), LogType.UI); OperationLog.Instance.WriteLog( string.Format("System.Reflection.Assembly.GetExecutingAssembly().Location.Replace(\"/\", \"\\\") = {0}", System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\")), LogType.UI); foreach (Process process in processes) { OperationLog.Instance.WriteLog( string.Format("process.Id = {0},process.MainModule.FileName = {1}", process.Id, process.MainModule.FileName), LogType.UI); if (process.Id != current.Id) { if (process.MainModule.FileName == current.MainModule.FileName) { return process; } } } return null; }
错误代码二
//只打开exe的话,没问题
//这个虽然解决错误代码一种关于多个VS程序,导致的不能运行程序的问题,【但是会导致,多个VS能打开多个程序】 并且调试运行处exe的时候,还可以从bin目录下直接打开exe Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); OperationLog.Instance.WriteLog( string.Format("进程Id={2} 进程名字 = {0},进程主模块的名字 = {1}", current.ProcessName, current.MainModule.FileName, current.Id), LogType.UI); OperationLog.Instance.WriteLog(string.Format("进程名字={0}的进程数量 = {0}", processes.Length), LogType.UI); OperationLog.Instance.WriteLog( string.Format("System.Reflection.Assembly.GetExecutingAssembly().Location.Replace(\"/\", \"\\\") = {0}", System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\")), LogType.UI); foreach (Process process in processes) { OperationLog.Instance.WriteLog( string.Format("process.Id = {0},process.MainModule.FileName = {1}", process.Id, process.MainModule.FileName), LogType.UI); if (process.Id != current.Id) { OperationLog.Instance.WriteLog(string.Format("System.Reflection.Assembly.GetExecutingAssembly().Location = {0}", System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\")), LogType.UI); if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)//只是区分了调试和非调试,能打开任意多个VS调试程序。并且还可以额外打开exe { return process; } } } OperationLog.Instance.WriteLog(string.Format("{0}", Environment.NewLine+Environment.NewLine), LogType.UI); return null;
错误代码三
相关文章
- IIS 之 在IIS7、IIS7.5中应用程序池最优配置方案
- C# 最基本的涉及模式(单例模式) C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁牺牲品。请重新运行该事务,解决方案: C#关闭应用程序时如何关闭子线程 C#中 ThreadStart和ParameterizedThreadStart区别
- 使用gprof对应用程序做性能评测
- 地球引擎高级教程——构建和发布应用程序并发布属于你自己的客户端APP!!!
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- Android应用程序窗口(Activity)的窗口对象(Window) 的创建过程分析
- VS2010/MFC编程入门之四(MFC应用程序框架分析)
- Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
- Android应用程序键盘(Keyboard)消息处理机制分析
- 解开Android应用程序组件Activity的"singleTask"之谜
- Android应用程序内部启动Activity过程(startActivity)的源代码分析
- Android应用程序启动过程源代码分析
- Android应用程序框架层和系统运行库层日志系统源代码分析
- WEB3 熄火了么,人工智能兴起之ChatGPT 在两个月内冲刺到 1 亿用户,超过任何其他现象级应用程序
- SwiftUI 教程之 用iPad 创建真正的iOS 应用程序介绍篇
- 使用 Flet Python 框架构建 Markdown 编辑器 Flutter 应用程序
- JS教程之使用 ElectronJS 桌面应用程序打印贴纸/标签
- 使用V8和node轻松profile分析nodejs应用程序
- android中退出当前应用程序的四种方法
- Windows应用程序的消息处理机制
- Android学习笔记(十七)——使用意图调用内置应用程序
- CSplitterWnd类分割MFC单文档应用程序窗口