- A+
近期,疫情减弱,防控级别降低,学校开学在即,很多事情需要准备,U盘小秘就被搁置了。
今日得空,继续开发!
上次更新的功能,关于U盘检测问题,卡了好久,导致上次有些功能没有实现:
[info]
1、能够智能记住上次的目录,如果,打开软件时,U盘已经插入,直接智能填充textBox,省去每次的手动设置。
2、为了更好的使用U盘,可以在U盘下新建一个专门的文件夹,作为同步文件夹,不影响其他部分的使用。
3、每次同步过程中,可以实时显示已同步的文件。
[/info]
既然要记住上次的目录,其过程是:
第一次打开软件时,选择目录后,操作、退出时触发函数:
[infobox title="代码:"]Form_FormClosing(object sender, FormClosingEventArgs e)[/infobox]
在此函数中,做保存目录的工作,保存目录,我选择了ini文件。
以后每次打开软件时,触发函数:
[successbox title="代码"]Form1_Load(object sender, EventArgs e)[/successbox]
[success][/success]
这样,就可以实现智能记住上次的目录了。
第二点,就是为了和自己平时的目录分开,自己找个空间大的盘,新建一个目录即可!
第三点,每次同步过程中,可以实时显示已同步的文件
listView是用来显示同步信息的,比如:文件是从U盘同步到硬盘,还是硬盘同步到U盘,以及都同步更新了哪些文件。
起初,在同步时,每次都是等到同步完成,listView突然出现大量同步信息。就是说,在同步过程中,listView不能同时刷新,而且界面处于卡死状态。
原因在于,程序是单线程的,当程序在同步文件时,其他事件就不能做出响应。
所以,要解决这个问题,就要使用多线程,可是以我的能力,是无法做到的,还没有学到多线程呢
只能硬着头皮,死磕多线程,通过一个晚上的强攻多线程基础知识,学到一点皮毛。又用了一个晚上,结合百度搜索,迷迷糊糊,把多线程问题搞定了
一个进程可以创建一个或多个线程以执行与该进程关联的部分程序代码。
在C#中,线程是使用Thread类处理的,该类在System.Threading命名空间中。使用Thread类创建线程时,只需要提供线程入口,线程入口告诉程序让这个线程做什么。通过实例化一个Thread类的对象就可以创建一个线程。创建新的Thread对象时,将创建新的托管线程。Thread类接收一个ThreadStart委托或ParameterizedThreadStart委托的构造函数,该委托包装了调用Start方法时由新线程调用的方法。
[infobox title="示例代码如下:"]
Thread thread=new Thread(new ThreadStart(method));//创建线程
thread.Start();
//启动线程
[/infobox]
上面代码实例化了一个Thread对象,并指明将要调用的方法method(),然后启动线程。ThreadStart委托中作为参数的方法不需要参数,并且没有返回值。ParameterizedThreadStart委托一个对象作为参数,利用这个参数可以很方便地向线程传递参数。
[successbox title="示例代码如下:"]
Thread thread=new Thread(new ParameterizedThreadStart(method));//创建线程
thread.Start(3); //启动线程
[/successbox]
创建多线程的步骤:
- 1、编写线程所要执行的方法
- 2、实例化Thread类,并传入一个指向线程所要执行方法的委托。(这时线程已经产生,但还没有运行)
- 3、调用Thread实例的Start方法,标记该线程可以被CPU执行了,但具体执行时间由CPU决定
这样就是实现了listView同步更新,小有成就
接下来,就要实现目录的查询、文件的比对工作了。下次见
往期回顾:
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信公众号扫一扫
-