一、命名空间namespace
命名空间是一个域,这在个域中所有的类型名字必须是唯一的,不同的类型分组归入到层次化的命名空间,命名空间的好处是:1、避免名字冲突,2、便于查找类型名字。
1、定义命名空间
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称
2、使用命名空间
using 关键字表明程序使用的是给定命名空间中的名称。
3、嵌套命名空间
命名空间可以被嵌套,即您可以在一个命名空间内定义另一个命名空间。您可以使用点(.)运算符访问嵌套的命名空间的成员。
二、C#如何防止程序多次运行的技巧
直接判断程序进程是否存在。
- 获取正在运行的程序,没有运行的程序则返回MutexKey.None
- 根据当前进程的进程名获得进程集合,如果进程ID不等于当前运行进程的ID以及运行进程的文件路径等于当前进程的文件路径,则说明同一个该程序已经运行了,此时将返回MutexKey.ProcessControl
- 比较返回值,如果=MutexKey.ProcessControl,表示重复运行。
三、C# DLL(程序集)的生成和调用
- 1.利用C#准备一个.cs文件;
- 2.开始菜单->Visual Studio 2015->VS2015 开发人员命令提示;
- 3.输入csc /t:library /out:D:\myprog\Environment1\Environment1\My_PublicClass.dll D:\myprog\Environment1\Environment1\My_PublicClass.cs
注解: - 1)library:意思是编译成类库,否则必须有Main();
- 2)/out:D:\myprog\Environment1\Environment1\My_PublicClass.dll:输出文件的位置和名称;
- 3)D:\myprog\Environment1\Environment1\My_PublicClass.cs:源文件的位置和名称;
四、实例程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
namespace My_PublicClass
{
#region 系统显示错误信息
public static class ShowMessage
{
public static void Error(String title,String infor)
{
MessageBox.Show( title,infor, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region 判断系统是否已启动类MutexManager
public static class MutexManager
{
public enum MutexKey
{
None = 0,
Error = 1,
ProcessControl = 2,
Vision = 3,
}
public static string GetMutexDescriptor(MutexKey key)
{
return ("MutexManager描述");
}
public static MutexKey Register(MutexKey key)
{
// 获取当前活动的进程
Process currentProcess = Process.GetCurrentProcess();
// 根据当前进程的进程名获得进程集合
// 如果该程序运行,进程的数量大于1
Process[] processcollection = Process.GetProcessesByName(currentProcess.ProcessName.Replace(".vshost", ""));
foreach (Process process in processcollection)
{
// 如果进程ID不等于当前运行进程的ID以及运行进程的文件路径等于当前进程的文件路径
// 则说明同一个该程序已经运行了,此时将返回已经运行的进程
if (process.Id != currentProcess.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == process.MainModule.FileName)
{
return MutexKey.ProcessControl;
}
}
}
return MutexKey.None;
}
public static void Release(MutexKey key)
{
return;
}
}
#endregion
}
五、参考资料
1、https://www.runoob.com/csharp/csharp-namespace.html
2、null的博客(https://www.cnblogs.com/feiyuhuo/p/5821727.html)
3、取名字脑壳疼的博客(https://www.cnblogs.com/w54255787/p/10012702.html)
六、源程序下载
1、dalong10的下载(https://download.csdn.net/download/dalong10/12697518)