Skip to main content

使用Host编程模型编写Windows服务应用

分类:  .Net技术 标签:  #基础 #.Net #.Net Host 发布于: 2023-06-15 15:41:58

在.Net 5之前用户如果想编写运行在Windows上的服务应用,只能通过.Net Framework来编写,现在可以直接通过.Net来编写Windows的服务应用了。我们本章尝试使用.Net 6的worker模板来编写Windows的服务应用。 完成本教程您将了解: 如何将基于.Net的worker模板应用发布为一个exe可执行文件。 创建一个Windows服务 启动和停止Windows服务 查看该服务的事件日志 管理Windows服务

Read more

使用Host模型创建一个基于队列的服务

分类:  .Net技术 标签:  #.Net Host #.Net #基础 发布于: 2023-06-15 15:38:40

从本节开始我们使用HOST模型创建一些实例。 队列服务是一个很好的例子,每次一个新的任务会被添加到队列中,然后队列的任务会依次被执行。 为了理解整个实例,我们使用如下的图来描述各类之间的关系: Class View 同时对我们即将创建的类作如下的说明: 接口IBackgroundTaskQueue: 用于定义后台使用的队列模型,该接口提供两个方法:QueueBackgroundWorkItemAsync, 用于向队列添加项目,DequeueAsync,用于从队列中取出项目 类DefaultBackgroundTaskQueue, 实现了接口IBackgroundTaskQueue, 同时可以注册到依赖注入容器中,用于向需要队列服务的代码提供队列服务。该服务会被注册为S

Read more

使用Host模型创建长时间运行的代码

分类:  .Net技术 标签:  #Azure #.Net #.Net Host 发布于: 2023-06-15 15:35:51

我们前面学习了Host的基本编程模型,也了解了Host模型提供的一些基本要素,例如: 配置 日志 依赖注入 IHostedService接口 使用Host模型创建长时间运行的代码主要的接口就是需要实现IHostedService,然后通过扩展方法AddHostedService注册到Host模型中,Host启动之后会按照注册的顺序依次启动这些服务,然后通过调用Host的run或者await RunAsync 阻止Main方法线程,直到Host模型运行结束,当然你也可以如下调用:

Read more

.Net Host详细介绍

分类:  .Net技术 标签:  #基础 #.Net #.Net Host 发布于: 2023-06-15 15:31:43

我们前面简单的介绍了什么是.Net Host, 我们这一节详细的学习和了解一下Host的内容。 我们先通过.Net Cli创建一个demo,认识一下什么是Host。 在你的电脑上打开终端,依次运行如下的命令: dotnet new webapp -o WebDemo1 cd WebDemo1 code . 基于.Net 6的Host模型 使用VS Code打开目录后,查看文件Program.cs的内容如下:

Read more

.Net Host概述

分类:  .Net技术 标签:  #.Net #.Net Host #基础 发布于: 2023-06-15 15:29:34

.Net的用户只需要稍微深入了解一下,一定都知道一个概念叫Host。 什么是Host? 我对于.Net Host的理解是: .Net Host是一个框架,这个框架向用户提供很多必须的特性。 .Net Host是一个直接可以运行的库基础,用户只需要根据Host的设计扩充它并且完善自己的应用。 .Net Host是一个专门设计用于长时间运行任务的基础库。

Read more

深入异步编程

分类:  .Net技术 标签:  #异步编程 #基础 #.Net 发布于: 2023-06-04 19:53:28

本篇是.Net异步编程的最后一篇了,希望这篇可以帮你总结前面几篇学习内容,并且在本章得到升华,也为大家将来在.Net中使用异步编程大大提高您应用吞吐量、性能。 在.Net中编写IO或者CPU异步任务是非常直接的,.Net/.Net Core/Window Runtime支持在语言级别使用Task/Task<T>/async/await几个接口用于异步编程,本章向大家介绍async背后发生的一些基本原理,帮助大家更好的理解async以及await使用。 Task And Task<T> 简单的来讲,Task是一个Promise Model of Concurrency模式的实现,关于什么是Promise Model of Concurrency, 大家可以自行去搜索并学习一下该模

Read more

处理完成的任务

分类:  .Net技术 标签:  #异步编程 #基础 #.Net 发布于: 2023-06-04 19:50:54

本节演示如何使用方法WhenAny()来巧妙的处理多个任务的await, 一定要仔细阅读代码。 本节代码可以从这里找到:https://github.com/hylinux/azure-demo/tree/main/dotnet/basic/asyncdemo/WhenAnyDemo 创建应用 使用如下的命令创建应用 mkdir WhenAnyDemo cd WhenAnyDemo dotnet new console 替换using 以编辑器打开文件Program.cs,替换如下的using语句 using System; using System.Collections.Generic; using System.Diagnostics; using

Read more

定时取消任务

分类:  .Net技术 标签:  #异步编程 #基础 #.Net 发布于: 2023-06-04 19:48:39

我们上一章学习了如何手动的取消任何,本章学习使用方法CancellationTokenSource.CancelAfter定时取消任务,本章的源代码可以在这里找到:https://github.com/hylinux/azure-demo/tree/main/dotnet/basic/asyncdemo/CancelTaskByTime 闲话少说,直接上代码。 创建应用 以如下的命令行创建代码: mkdir CancelTaskByTime cd CancelTaskByTime dotnet new console 替换using语句 以编辑器打开文件Program.cs, 替换using语句如下: using System; using System.

Read more

取消任务

分类:  .Net技术 标签:  #异步编程 #基础 #.Net 发布于: 2023-06-04 19:09:31

我们前面几章学习了异步编程的基本用法和基本理论,本章来学习如何取消一个Task。 用户可以取消还没有完成的任务,实际的基本原理也很简单,只需要给没个异步方法带入CancellationTokenSource的实例就可以了,下面的例子演示如何取消一个任务,您可以从这里找到示例代码:https://github.com/hylinux/azure-demo/tree/main/dotnet/basic/asyncdemo/CancelDemo 该实例的场景是取消从网络上下载内容的web客户端。 创建控制台应用 使用如下的命令行创建控制台应用 mkdir CancelDemo cd CancelDemo dotnet new console

Read more