ASP.NET多线程的使用(二)

简介: 线程,是操作系统中的术语,是操作系统进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以有很多线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。我们把用来执行用户任务的线程称为工作线程。而线程池,是一种成熟的线程使用模式。

创建web api项目进行接口测试


38.png


创建WebAPI项目,方便测试

39.png

修改【App_Start/WebApiConfig.cs】配置文件


40.png


添加取消XML返回配置


//取消XML返回

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

添加{action}访问路径设置


routeTemplate: "api/{controller}/{action}/{id}",

41.png


添加【API】接口:

42.png



依次选择【Web API】->【Web API 2 控制器 - 空】->【添加】:


43.png


输入文件名【Test】,点击【添加】


44.png


【TestController.cs】编码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Web.Http;
namespace webApi.Controllers
{
    public class TestController : ApiController
    {
        /// <summary>
        /// 计时器
        /// </summary>
        public static int times = 0;
        /// <summary>
        /// 计时器开关
        /// </summary>
        public static bool ctrl = false;
        /// <summary>
        /// 开启计时器线程
        /// </summary>
        /// <param name="type">0、关闭<br/>1、开启</param>
        /// <returns></returns>
        [HttpGet]
        public object StartTime(string type)
        {
            ctrl = type.Equals("0") ? false : Times();
            return ctrl ? "启动成功" : "关闭成功";
        }
        /// <summary>
        /// 获取计时的时间
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public object GetTime() {
            return times;
        }
        /// <summary>
        /// 开启计时
        /// </summary>
        /// <returns></returns>
        private bool Times() {
            Thread t = new Thread(()=>{
                while (ctrl) {
                    Thread.Sleep(1000);//休息1秒
                    times += 1;
                }
            });
            //启动
            t.Start();
            return true;
        }
    }
}


代码功能测试:


设为启动项:

45.png



启动项目:

46.png



选择【API】

47.png

两个接口都可以看到:

48.png

访问方式:


【http://localhost:2298/api/Test/StartTime?type=0】开启或关闭

49.png



【http://localhost:2298/api/Test/GetTime】获取时间

50.png



开启测试:


【http://localhost:2298/api/Test/StartTime?type=1】

51.png



稍等一会测试时间:【http://localhost:2298/api/Test/GetTime】

52.png



关闭测试:


53.png54.png




可以看到试用多线程可以当然控制时间,控制开关操作,那么这类操作基本上都会在各种活动中用到,我之前的老总就喜欢各种各样的活动,每次我都会做类似的开关。当然,这个东西不仅仅用在这个地方,还有很多的环境都会用到,咱们要做到具体问题具体分析,可以在编码过程中为大家解决很多问题。


到这里,多线程的讲解就结束了,希望能对大家有所帮助,欢迎一键三连。


时间判断我这里有一个【Java】版本的,【C#】的类似。


【判断当前时间是否在某个时间范围内_红目香薰-CSDN博客】


相关文章
|
7月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
425 3
|
1月前
|
开发框架 Java .NET
.net core 非阻塞的异步编程 及 线程调度过程
【11月更文挑战第12天】本文介绍了.NET Core中的非阻塞异步编程,包括其基本概念、实现方式及应用示例。通过`async`和`await`关键字,程序可在等待I/O操作时保持线程不被阻塞,提高性能。文章还详细说明了异步方法的基础示例、线程调度过程、延续任务机制、同步上下文的作用以及如何使用`Task.WhenAll`和`Task.WhenAny`处理多个异步任务的并发执行。
|
6月前
|
开发框架 监控 Java
【.NET Core】多线程之线程池(ThreadPool)详解(二)
【.NET Core】多线程之线程池(ThreadPool)详解(二)
105 3
|
6月前
|
SQL 开发框架 Java
【.NET Core】多线程之线程池(ThreadPool)详解(一)
【.NET Core】多线程之线程池(ThreadPool)详解(一)
445 2
|
6月前
|
算法 安全 Java
【.NET Core】 多线程之(Thread)详解
【.NET Core】 多线程之(Thread)详解
82 1
|
数据采集 Java C++
【.NET 6】多线程的几种打开方式和代码演示
多线程无处不在,平常的开发过程中,应该算是最常用的基础技术之一了。以下通过Thread、ThreadPool、再到Task、Parallel、线程锁、线程取消等方面,一步步进行演示多线程的一些基础操作。欢迎大家围观。如果大佬们有其他关于多线程的拓展,也欢迎在评论区进行留言,大佬们的知识互助,是.net生态发展的重要一环,欢迎大佬们进行留言,帮助更多的人。
282 0
【.NET 6】多线程的几种打开方式和代码演示
|
安全 NoSQL MongoDB
.Net线程同步技术解读
C#开发者(面试者)都会遇到lock(Monitor),Mutex,Semaphore,SemaphoreSlim这四个与锁相关的C#类型,本文期望以最简洁明了的方式阐述四种对象的区别。
.Net线程同步技术解读
|
存储 开发框架 Java
ASP.NET多线程的使用(一)
线程,是操作系统中的术语,是操作系统进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以有很多线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。我们把用来执行用户任务的线程称为工作线程。而线程池,是一种成熟的线程使用模式。
331 0
ASP.NET多线程的使用(一)
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
50 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
79 0