背景

App需要开线程和定时器,本文对这两种的通用方法做个记录

正文

线程

  1. 添加命名空间
using System.Threading;
  1. 创建线程
//shutdownlazer()即是线程要执行的函数
Thread shutdownlazer_thread = new Thread(shutdownlazer);
  1. 开启线程
//shutdownlazer_thread即为第 2 步获取到的线程句柄
shutdownlazer_thread.Start();
  1. 关闭线程

    线程不需要自己关闭,当shutdownlazer()函数运行完退出了,线程也就自然关闭了。当然,若是关闭主窗口,则线程一定要关闭,可在主窗口关闭事件中调用函数关闭所有线程,
// 窗口关闭,关闭所有线程
private void Mainwin_FormClosing(object sender, FormClosingEventArgs e)
{
System.Environment.Exit(0);
}

定时器

  1. 添加命名空间
using System.Timers;
  1. 实例化一个定时器
private static System.Timers.Timer RUtimer;
  1. 创建定时器并设定定时器参数
    // 创建一个100ms定时的定时器
RUtimer = new System.Timers.Timer(100); // 参数单位为ms
// 定时时间到,处理函数为OnTimedUEvent(...)
RUtimer.Elapsed += OnTimedUEvent;
// 为true时,定时时间到会重新计时;为false则只定时一次
RUtimer.AutoReset = true;
// 使能定时器
RUtimer.Enabled = true;
// 开始计时
RUtimer.Start();

此处需要注意的是,当让系统自动添加OnTimedUEvent(...)函数时,自动生成的函数如下,

void OnTimedUEvent(object sender, ElapsedEventArgs e)
{
throw new NotImplementedException();
}

throw new NotImplementedException();此句是为了提醒我们来实现该定时器的代码,若不将该代码注释,则APP实际运行起来,定时器时间一到,就会在此处抛出异常。

4. 停止定时器

    RUtimer.stop();

至此记录完毕。

参考链接

记录时间:2017-5-9

记录地点:深圳WZ

Visual studio之C# 新建线程与定时器的使用的更多相关文章

  1. 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码

    本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...

  2. crossplatform---Nodejs in Visual Studio Code 06.新建Module

    1.开始 Node.js:https://nodejs.org 2.Moudle js编程中,由于大家可以直接在全局作用域中编写代码,使开发人员可以很容易的新建一个全局变量或这全局模块,这些全局变量或 ...

  3. Nodejs in Visual Studio Code 06.新建Module

    1.开始 Node.js:https://nodejs.org 2.Moudle js编程中,由于大家可以直接在全局作用域中编写代码,使开发人员可以很容易的新建一个全局变量或这全局模块,这些全局变量或 ...

  4. Visual studio之C#跨线程调用UI控件

    背景 当前串口通讯项目,多个线程需要同时利用richTextBoxMsg控件打印信息,直接调用会造成线程不安全,严重的时候会直接导致UI线程挂掉,因此本篇就跨线程调用UI控件做个记录. 正文 定义控件 ...

  5. Visual Studio 2015 新建MVC项目 Package Manager Console不能使用 (HRESULT: 0x80131500)

    Visual studio 2015 突然新建不了MVC项目,报出错误: HRESULT: 0x80131500 在折腾了很长时间,最后在Github上看到这样一个贴 地址:https://githu ...

  6. 带你玩转Visual Studio

    带你玩转Visual Studio 带你新建一个工程 工程目录下各文件的含义 解决方案与工程 在这之前先了解一个概念:解决方案与工程. 解决方案(Solution):一个大型项目的整体的工作环境: 工 ...

  7. 带你玩转Visual Studio——带你了解VC++各种类型的工程

    原文地址:http://blog.csdn.net/luoweifu/article/details/48816605 上一篇文章带你玩转Visual Studio——带你新建一个工程一文中提到新建一 ...

  8. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  9. 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet

    1. 打开Visual Studio 2010 2. 新建一个基于Class Library的项目 3. 给项目起个名字然后OK 4. 为项目添加下列Reference System.Manageme ...

随机推荐

  1. 1.L 查询关键字 HEXLOC

    Take the compile listing for the program that has either OFFSET or LIST option selected. Use the OFF ...

  2. Python开发基础-Day12模块1

    time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月 ...

  3. Standard - 多线程基本概念面试题待整理

    http://blog.csdn.net/dazhong159/article/details/7948327 http://z-jiankun.iteye.com/blog/1408471 http ...

  4. 自定义loading dialog --- 后背景透明

    自定义loading dialog --- 后背景透明    <style name="loading_dialog" parent="android:style/ ...

  5. 小Z的城市之旅

    题目大意: 从(0,0)走到(x,y),每次可以向上下左右走一格,问走r步刚好到(x,y)的方案数. 思路: 找规律发现答案就是C((r+x-y)/2,r)*C((r-x-y)/2,r). #incl ...

  6. 一个简单的Spring程序

    首先,要用Eclipse开发Spring程序,需要安装Spring插件并重启Eclipse 具体操作: 新建java Project后,导入需要使用的包(提前下好Spring),Spring包包含6个 ...

  7. ES6的异步操作

    刚开始看书上的这一章的时候,没想到JavaScript还有异步操作,还有这种操作???果不其然,异步操作和java里面的异步操作同样,还是有点难.不过看了两三遍下来,似乎还是明白了一些. 废话不多说, ...

  8. PHP时间戳是10位的,JS时间戳是13位

    var dateStr = new Date(time * 1000);  

  9. php分布式缓存系统 Memcached 入门

    Memcached 是一个分布式的缓存系统, 但是 Memcachd 到底是什么意思,有什么作用呢?缓存一般用来保存一些经常被存取的数据和资源(例如:浏览器会将访问过的网页会话缓存起来),因为通过缓存 ...

  10. Web安全开发指南--数据验证

    1.数据验证 4.1.输入数据验证安全规则 1 数据验证必须放在服务器端进行. 2 至少对输入数据的数据类型.数据范围和数据长度进行验证. 3 所有来自不可信数据源(比如网络.用户命令.数据库和文件系 ...