C#学习笔记

C#学习笔记

C#学习中遇到的一些问题以及记录

1.C#中Readline与Readkey的区别

Readline是读到一个回车为止。
Readkey是等待按键并读取,就是随便按一个键就行。类似于c语言的getchar()

2.Application.EnableVisualStyles()的作用

Application.EnableVisualStyles()的作用 定义:

public static void EnableVisualStyles ()

此方法为应用程序启用可视样式。

如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。

若要使 EnableVisualStyles 生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是 Main 函数的第一行。当调用 EnableVisualStyles 时,无需单独的清单即可启用可视化样式。
简单的说就是让你的控件(包括窗体)显示出来。

static class Program
{
    //The main entry point for the application.
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

3.Application.SetCompatibleTextRenderingDefault(false)作用

1.作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI)
true使用GDI+方式显示文本,
false使用GDI方式显示文本.
2.只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.

3.只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常.

4.C#中Mutex的用法

C#中Mutex是互斥锁,位于System.Threading 命名空间中。顾名思义,它是一个互斥的对象,同一时间只有一个线程可以拥有它,该类还可用于进程间同步的同步基元。

如果当前有一个线程拥有它,在没有释放之前,其它线程是没有权利拥有它的。我们可以把Mutex看作洗手间,上厕所的人看作线程;上厕所的人先进洗手间,拥有使用权,上完厕所之后出来,把洗手间释放,其他人才可以使用。

线程使用Mutex.WaitOne()方法等待C# Mutex对象被释放,如果它等待的C# Mutex对象被释放了,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()方法释放这个对象,而在此期间,其他想要获取这个C# Mutex对象的线程都只有等待。

我们可以利用这个特性来控制一个应用程序只能运行一个实例。其他实例由于得不到这个Mutex而不能运行。

当第二个实例想运行的时候,由于已经有一个进程拥有了这个互斥锁,此进程不能拥有,所以进程启动被终止。此外还需说明一点,mutex的name是在系统中是唯一的,也就是上述代码中的Name,系统依靠这个name属性来标识唯一的Mutex。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。