- 博客(12)
- 收藏
- 关注
原创 C# DateTime与时间戳转换
C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳。1. 什么是时间戳首先要清楚JavaScript与Unix的时间戳的区别:JavaScript时间戳:是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。Unix时间戳:是指格林威治时间1970年01月01日00时0...
2020-04-13 12:45:20
900
原创 C#虚基类继承与接口的区别
类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { // .......... } class Cat : object { // .......... }C#中所有的类都是默认由object类派生来的,显示指定或者省略效果是一样的,所以上面的两个例子是完全相同的。 C#中类包括:...
2016-06-16 14:05:00
142
原创 C#学习笔记——MDI窗体(多文档界面)
1、设置父窗体:如果要将某个窗体设置为父窗体,只需将该窗体的IsMdiContainer属性设置为True即可。2、设置子窗体:通过设为某个窗体的MdiParent属性来确定该窗体是那个窗体的子窗体。语法如下:1: public Form MdiParent{get;set;}3、排列MDI子窗体:语法如下:1: public void Layout...
2016-06-15 20:37:00
232
原创 C# 对文件与文件夹的操作包括删除、移动与复制
在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类,本文将详细介绍,需要的朋友可以参考。在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类。文件夹(Folder)是只在Wi...
2016-06-14 16:51:00
132
原创 C#获取文件MD5值方法
private static string GetMD5HashFromFile(string fileName) { try { FileStream file = new FileStream(fileName, FileMode.Open); System.Security.Cryptography.MD...
2016-06-14 16:28:00
171
原创 C#多线程学习(六) 互斥对象
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它...
2016-06-14 16:06:00
64
原创 C#多线程学习(五) 多线程的自动管理(定时器)
Timer类:设置一个定时器,定时执行用户指定的函数。 定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象: Timer timer = new Timer(timerDelegate, s,1000, 1000); // 第一个参数:指定了TimerCallback 委托,表示要执行的方法; //...
2016-06-14 16:03:00
102
原创 C#多线程学习(四) 多线程的自动管理(线程池)
在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒 这一般使用Timer(定时器)来解决;ThreadPool类提供一个由...
2016-06-14 15:59:00
89
原创 C#多线程学习(三) 生产者和消费者
前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。 C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。在C#中,关键字lock定义如下: ...
2016-06-14 15:49:00
150
原创 C#多线程学习(二) 如何操纵一个线程
下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。打开你的VS....
2016-06-14 15:39:00
68
原创 C#多线程学习(一) 多线程的相关概念
什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。 什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 什么是多线程? 多线程是指程序中包含多个执行流,即在一个程序中可...
2016-06-08 23:11:00
56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人