首先是什么原因让我做这个小项目的呢,是因为在知乎里看到的游侠的文章才尝试着自己做的,文章地址是:https://www.zhihu.com/question/48811975

开始做的时候我是照着文章的界面去设计的,界面差不多是这样子:

然后具体说一说我遇到的问题吧,

首先是进程的问题:做这个小工具主要是为了关闭英雄联盟客户端,所以首先是怎么获取本机正在运行的进程,废话不多说,直接贴代码:

public void Process1(object sender, EventArgs e)
{
string name = "LeagueClient";
Process[] process = Process.GetProcesses();
for (int i = 0; i < process.Length; i++)
{
if (process[i].ProcessName == name)
{
process[i].Kill();
MessageBox.Show("已经关闭英雄联盟,请在规定时间内不要打开");
}
}
if (t.AutoReset == false)
{
MessageBox.Show("时间到,现在可以打开英雄联盟了,但是要适度玩游戏哦!");
}
}

  

其实网上的例子大把,只需要搜索process 获取进程关键字就ok,这里我用的是局部变量传进程的名称

然后是我们要在一段时间内让进程不断的被杀,当我们点击button后,在一段时间内,英雄联盟不能启动,所以这里就要用到timer这个控件了

在button按钮里的代码如下:

 public void button1_Click(object sender, EventArgs e)
{ tt.Start();
if (textBox1.Text == "")
{
MessageBox.Show("请输入要屏蔽的时间");
}
else if (int.Parse(textBox1.Text) < 60)
{
MessageBox.Show("时间必须大于60");
}
else
{
label1.Text = "00";
label7.Text = "00:00"; t.Elapsed += new System.Timers.ElapsedEventHandler(Process1);//到达时间自动执行Process1方法
t.AutoReset = true;//设置执行t.Elapsed += new System.Timers.ElapsedEventHandler(Process1);这个是执行一次(false)还是一直执行(true)
t.Enabled = true;//启用elapsed事件(true),关闭elapsed事件(false) } }

  

再然后就是timer1_Tick事件了,在这个方法里,我开始是栽了很多的跟头的,首先遇到的问题是给label赋值问题,会报一个进程错误,然后这个错误有两种解决方法:

第一种是在这里加上CheckForIllegalCrossThreadCalls = false;这么一句,就不会出现上面的问题了,在有一种是比较高深的,我也只是明白了一点点:声明一个委托,然后invoke:

这个的意思就是异步调用,使用委托去执行你需要执行的方法,就是把方法当作一个参数传递,其他不多说了,自行百度

这里我要提醒我自己一下:论全局声明和局部声明的重要性。要知道这个问题可是耗费了我一个上午的时间。

这里再说下我们想要做到计时效果的话,就是实时显示时间,首先是需要设置一下timer的Interval的属性,单位是毫秒,不管是在代码中设置还是在属性里设置,这一步是实时显示时间的关键,个人建议设置为1秒刷新,到了这一步,基本的功能都完善了,再想想好像也没有了任何遇到的问题。

如果有想自己动手做碰到难题的朋友,欢迎随时交流切磋。

QQ:511582456  请说明是什么原因。

感悟:任何简单的事情看似简单,实则对你来说是很难的,如果你不去尝试动手,也许你永远也不会做。反之,任何难的事情都是由简单的事情积累而成的,所以不积跬步无以至千里。

c#进程、定时器初步学习的更多相关文章

  1. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  2. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...

  3. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  4. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  5. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  6. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  7. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  8. 语法分析器初步学习——LISP语法分析

    语法分析器初步学习——LISP语法分析 本文参考自vczh的<如何手写语法分析器>. LISP的表达式是按照前缀的形式写的,比如(1+2)*(3+4)在LISP中会写成(*(+ 1 2)( ...

  9. 状态保持以及AJAX的初步学习

    嘿嘿,今天学习的有点迷茫哦,主要学习把验证码使用在登录页面时间的一些逻辑,学习这个时间并没有那么的迷惑哦,可是自己写程序时间倒是有点反应迟钝,不过还好总是在最后搞清楚啦,另外就是一步一步的学习是接近项 ...

随机推荐

  1. DWM1000 Blink结构 -- 帧过滤第一节

    DWM1000 帧结构分析主要学习DWM1000 帧过滤功能,希望在目前DS-TWR定位系统中增加中断和帧过滤功能,帧过滤功能可以有效减少系统中的各个模块同时收发数据时的干扰问题,从而极大的提供系统稳 ...

  2. python用类实现xrange

    class xrange(object): def __init__(self, start, end=0, step=1): self.start = start self.end = end se ...

  3. Dockerfile中COPY命令的简单性

    dockerfile中的COPY命令是不会拷贝目录结构的,它只会单纯把包含的所有文件拷贝到另一个目录中去. 相关链接:https://www.cnblogs.com/sparkdev/p/957324 ...

  4. RSP小组——团队冲刺博客四

    RSP小组--团队冲刺博客四 冲刺日期:2018年12月13日 前言 问题已经明确,经过今天的努力,部分已近得到解决,所以,今天是一个值得庆祝的日子. 各成员今日(12.13)完成的任务 李闻洲对音乐 ...

  5. 微信跳转ticket值怎么得到?浏览器跳到微信?哪里有微信跳转接口?跳转功能能用多久?

    目前很多实用微信跳转技术的电商朋友,网站文章头部或者文章中部出现了点击关注微信关注的二维码,用户点击进去直接跳转到微信内打开指定的二维码,识别即可关注,方便省事,比以往的一键复制—粘贴微信号,转化效果 ...

  6. 关于 Mybatis 设置懒加载无效的问题

    看了 mybatis 的教程,讲到关于mybatis 的懒加载的设置: 只需要在 mybatis 的配置文件中设置两个属性就可以了: <settings> <!-- 打开延迟加载的开 ...

  7. 移动端h5 实现多个音频播放

    前一段时间做到一个项目,其中用到很多之前没用过的东西,其中一个就是h5的多音频实现,背景音频和说话同时播放,其中出现了很多问题,不过总算找到了解决方案. 平时做H5如果只有一个音乐的话就直接在页面里面 ...

  8. NPOI操作创建Excel

    一.下载NPOI类库 使用Nuget在线搜索NPOI,下载安装 二.代码开撸 var workBook = new HSSFWorkbook(); #region 设置样式 IFont font = ...

  9. ActiveMQ队列、主题模式区别

    1.ActiveMQ队列模式如下图,生产者创建消息到消息中间件,再“均分给消费者”. 2.ActiveMQ主题模式如下图,生产者创建消息到消息中间件,消费者会接受到订阅的主题中所有的消息.在主题模式下 ...

  10. java课程之团队开发冲刺阶段1.7

    一.总结昨天进度 1.昨天学习了对数据库增删改查的基本操作,并且可以使用代码实现操作 二.遇到的问题 1.由于是学习阶段,没有遇到太大阻碍,但是最终需要实现的是联网进行数据库的读写或者是对本地数据库的 ...