winform程序防止多开

Winform启动的时候,检测是否存在同样的进程名,防止程序多开; static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { string processName = Process.GetCurrentProcess().ProcessName; Process[] processes = Process.GetProcessesByName(processName); //如果该数组长度大于1,说明多次运行 if (processes.Length > 1) { MessageBox.Show("程序已运行,不能再次打开!"); Environment.Exit(1); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } 利用Mutex互斥对象防止程序多开; static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { bool isAppRunning = false; Mutex mutex = new Mutex(true, System.Diagnostics.Process.GetCurrentProcess().ProcessName, out isAppRunning); if (!isAppRunning) { MessageBox.Show("程序已运行,不能再次打开!"); Environment.Exit(1); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }

2025年7月24日 · 1 分钟 · 247 字

.NET的版本

.NET Framework 是微软在 2002 年推出的一个软件开发框架,它提供了一组类库和运行时环境,可以用来开发 Windows 应用程序、Web 应用程序、服务端应用程序等。下面是 .NET Framework 的版本列表: .NET Framework 1.0 .NET Framework 1.1 .NET Framework 2.0 .NET Framework 3.0 .NET Framework 3.5 .NET Framework 4.0 .NET Framework 4.5 .NET Framework 4.5.1 .NET Framework 4.5.2 .NET Framework 4.6 .NET Framework 4.6.1 .NET Framework 4.6.2 .NET Framework 4.7 .NET Framework 4.7.1 .NET Framework 4.7.2 .NET Framework 4.8 除了 .NET Framework,微软还推出了 .NET Core 和 .NET 5,它们是跨平台的 .NET 实现,可以在 Windows、Linux 和 macOS 上运行。下面是 .NET Core 和 .NET 5 的版本列表: ...

2025年7月24日 · 1 分钟 · 310 字

程序进程间通讯的方法

在编程中,有几种常见的方法可以实现程序进程间的通信,包括: 管道(Pipes):管道是一种在两个进程之间传递数据的通信机制。它可以是匿名管道(在同一台计算机上的进程之间使用)或命名管道(在网络上的不同计算机之间使用)。 套接字(Sockets):套接字是一种通过网络在不同计算机上的进程之间进行通信的方法。它可以使用TCP协议(面向连接)或UDP协议(无连接)。 ...

2025年7月24日 · 4 分钟 · 1518 字

C#中异步调用函数的方法有哪些

在 C# 中,有几种方法可以进行异步调用函数: 使用 async/await 关键字:async/await 是 C# 中用于编写异步代码的关键字组合。你可以将需要异步执行的函数标记为 async,然后在其中使用 await 关键字来等待异步操作完成。这样可以使函数在异步操作执行期间不阻塞,并在操作完成后继续执行。例如: public async Task MyAsyncMethod() { // 异步操作 await Task.Delay(1000); // 异步操作完成后的代码 Console.WriteLine("异步操作完成"); } 使用 Task.Run 方法:Task.Run 方法可以将一个方法或代码块包装成一个 Task 对象,并在后台线程上执行。这样可以实现异步调用函数的效果。例如: public void MyMethod() { // 异步调用函数 Task.Run(async () => { // 异步操作 await Task.Delay(1000); // 异步操作完成后的代码 Console.WriteLine("异步操作完成"); }); // 继续执行其他代码 Console.WriteLine("异步调用进行中"); } 使用委托和回调函数:你可以定义一个异步委托,并使用回调函数来处理异步操作完成后的结果。例如: public delegate void MyAsyncDelegate(); public void MyMethod() { // 创建异步委托实例 MyAsyncDelegate asyncDelegate = new MyAsyncDelegate(MyAsyncMethod); // 异步调用委托 asyncDelegate.BeginInvoke(MyAsyncCallback, null); // 继续执行其他代码 Console.WriteLine("异步调用进行中"); } public void MyAsyncMethod() { // 异步操作 Thread.Sleep(1000); } public void MyAsyncCallback(IAsyncResult result) { // 异步操作完成后的代码 Console.WriteLine("异步操作完成"); } 这些是在 C# 中进行异步调用函数的几种常见方法。你可以根据具体的需求选择适合的方法来实现异步操作。

2025年7月24日 · 2 分钟 · 611 字

关于浏览器css&js缓存

关于浏览器css,js缓存 ctrl + F5 强制刷新 如果刷新浏览器无法清除js的缓存,就可以尝试在js文件后面加上版本号,例如:js.js?v= 在html头部加上no-cache Cache-Control Cache-Control是HTTP协议中的一个响应头部字段,用于控制缓存的行为。它指示客户端和中间缓存服务器如何缓存和重新验证响应。 ...

2025年7月24日 · 2 分钟 · 592 字

glob表达式

Glob 表达式是一种用于匹配文件路径或名称的模式字符串。它在很多编程语言和操作系统中都被广泛使用,用于文件系统操作、文件搜索和筛选等场景。 Glob 表达式使用特定的通配符字符来表示匹配规则,常见的通配符包括: *:匹配任意数量的字符(包括零个字符)。 ?:匹配单个字符。 [...]:匹配方括号中指定的字符范围中的任意一个字符。例如,[abc] 匹配 a、b 或 c。 [!...]:匹配不在方括号中指定的字符范围中的任意一个字符。例如,[!abc] 匹配除了 a、b 和 c 之外的任意字符。 以下是一些示例: ...

2025年7月24日 · 2 分钟 · 530 字

字符编码与行尾序列

在计算机中,所有数据都是以二进制数的形式存储的,字符 char 也不例外。为了表示字符,我们需要建立一套“字符集”,规定每个字符和二进制数之间的一一对应关系。有了字符集之后,计算机就可以通过查表完成二进制数到字符的转换。 ASCII 字符集 ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的字符。如图 3-6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 ...

2025年7月24日 · 5 分钟 · 2201 字

分布式锁

分布式锁是一种用于在分布式系统中实现并发控制的机制。在分布式系统中,多个节点同时访问共享资源可能导致数据不一致或冲突的问题。分布式锁可以确保在任意时刻只有一个节点可以访问共享资源,从而避免并发冲突。 分布式锁通常使用的是互斥锁(Mutex)的概念,它可以保证在同一时刻只有一个节点能够获取到锁,其他节点需要等待。一旦一个节点获取到了分布式锁,它就可以执行需要保护的临界区代码,执行完成后释放锁,其他节点才能继续竞争获取锁。 ...

2025年7月24日 · 2 分钟 · 697 字

异或

异或(Exclusive OR,简称 XOR)是一种数学运算符,常用于逻辑运算与计算机中的位运算。当且仅当两个输入值不同时,异或运算输出为真(1),否则输出为假(0),即“同为 0,异为 1”。异或运算可以通过数学符号“⊕”表示, 具有交换律、结合律、恒等律等性质。 ...

2025年7月23日 · 2 分钟 · 672 字

git工作流

git clone // 到本地 git checkout -b xxx 切换至新分支xxx (相当于复制了remote的仓库到本地的xxx分支上 修改或者添加本地代码(部署在硬盘的源文件上) git diff 查看自己对代码做出的改变 git add 上传更新后的代码至暂存区 git commit 可以将暂存区里更新后的代码更新到本地git git push origin xxx 将本地的xxxgit分支上传至github上的git (如果在写自己的代码过程中发现远端GitHub上代码出现改变) ...

2025年7月23日 · 1 分钟 · 422 字