Skip to main content

async/wait和ConfigureWait(false)在异步编程中有什么关系?

分类:  .Net技术 标签:  #异步编程 #基础 #.Net 发布于: 2025-02-17 17:50:47

.Net使用async和await两个关键字来简化异步编程,不过需要注意的是: 异步编程不是并行编程,和我们提到的多线程编程虽然有联系,但是异步编程不是多线程的那种多任务编程。 异步编程要注意编程任务是基于CPU计算多,还是基于IO多,特别是在基于Asp.net Core Genric Host进行后端服务编程时(例如:写基于Windows或者基于Linux的服务程序,不是指Web编程),特别需要注意区分你的任务是基于IO的还是基于CPU计算的任务。基于CPU计算的任务都需要Task.Factory.new放入runtime的线程池中运行。 在基础的编程模型中我们有多进程,多线程分别利用的是CPU的特性,例如分时CPU,多核等等,但是还有一个概念就是可阻塞IO的模型,可以将

Read more

Azure DevOps Pipeline 如何支持.Net 8项目

分类:  HowTo 标签:  #DevOps #.Net 发布于: 2025-02-16 18:49:11

今天正式发布了.Net 8,近期做了一些.Net 8的测试,对这个LTS版本特别满意,决定将自己的项目迁移到.Net8, 项目很小,只需要更改项目文件中的<TargetFramework>net8.0</TargetFramework>, 重新编译打包就可以完成升级了。 更改完项目之后,本地打包测试,运行正常,然后决定正式发布,将develop分支merge到release分支,然后直接使用git push到Azure Devops, 正式发布,最后只需要静静等待就可以了。

Read more

使用Visual Studio编译工程时出现路径太长导致编译失败怎么解决

分类:  故障排查 标签:  #.Net #编程 发布于: 2024-01-16 15:48:46

最近在学习一个开源的项目,这个项目自带了一些用于培训目的的模块,需要自己重新编译打包测试,编译的过程中总是遇到莫名奇妙的问题:编译报这个错误之后,仔细看了一下编译错误中呈现的路径,发现这些路径都是没有问题的,但是编译器一直失败,通过查询了msbuild以及visual studio的文档之后,发现引发这个原因主要还是由于Windows系统对于长路径支持引发的,为了缓解这个问题,可以采用如下的步骤:

Read more

在jupyter notebook里配置交互式的.Net

分类:  .Net技术 标签:  #基础 #.Net 发布于: 2023-08-07 22:28:33

为了快速的通过代码学习Azure的.Net SDK或者API, 我们可以配置Jupyter notebook、Jupyter lab或者VS Code交互式的使用.Net, 这样不用写很多代码,而且可以快速的演示和学习功能,我们下面来介绍如何安装和配置这个工具。 安装jupyter 首先我们需要安装一个Python, 这个很好理解,因为jupyter是基于python的。 您可以从https://www.python.org下载适合您平台的python版本并安装,安装好了之后,打开管理员终端(在Windows下), 如果是Linux,则使用sudo。 使用如下的命令来安装Jupyter notebook和jupyter lab:

Read more

async/wait和ConfigureWait(false)在异步编程中有什么关系?

分类:  .Net技术 标签:  #异步编程 #.Net #基础 发布于: 2023-08-07 22:00:48

我喜欢.Net的最大原因就是.Net是真的提供了很多工具简化编程的难度,并提供了健壮性。尤其是异步编程模式的提出。 .Net使用async和await两个关键字来简化异步编程,不过需要注意的是: 异步编程不是并行编程,和我们提到的多线程编程虽然有联系,但是异步编程不是多线程的那种多任务编程。 异步编程要注意编程任务是基于CPU计算多,还是基于IO多,特别是在基于Asp.net Core Genric Host进行后端服务编程时(例如:写基于Windows或者基于Linux的服务程序,不是指Web编程),特别需要注意区分你的任务是基于IO的还是基于CPU计算的任务。基于CPU计算的任务都需要Task.Factory.new放入runtime的线程池中运行。 在基础的编程模型中我

Read more

在MVVM项目中使用async/await - 数据绑定

分类:  .Net技术 标签:  #异步编程 #.Net #MVVM 发布于: 2023-08-07 21:30:33

今天找到了几篇非常好的文章,这些文章集中讨论了MVVM模式的编程,一一分享给大家。 本篇讨论在WPF & Net MAUI & WinUE3 MVVM项目中使用Async & await进行多任务编程,是基于大牛Stephen Cleary于2014年3月份左右发表的博客。原始页面已经找不到了,进入了微软MSDN杂志的存档了。 之前在网络上搜索了不少文章,这些文章讨论如何在UI环境中使用多线程时无一例外的都是利用例如wpf的dispatcher将长时间运行的线程放置到后台线程中,并通过Dispatcher来更新UI, UI线程无需等待。看到这些代码我都有一个问题,为什么不可以直接使用async/await而避免使用dispatcher来配合多任务编程呢?找了不少方案,自己也尝试设

Read more

如何优化运行在Windows Server和IIS上的Web应用

分类:  Windows Server 标签:  #Azure #基础 #Virtual Host #.Net #Windows #Web 发布于: 2023-06-15 19:55:35

近期将原来运行在Azure Linux虚拟机上的博客迁到了基于Azure Windows Server的环境上,发现运行速度大大提升。感慨下,原来之前开源社区忽悠了我这么多年,什么Linux的性能比Windows好哦。之前说啥什么Linux比Windows安全这个我是一直不信的,因为我是遭受过Linux被入侵的毒打事件的,说Linux安全的人估计从来没有遭受过Linux系统被入侵的毒打,这之后我去恶补了很多安全相关的知识,才发现对于Linux不了解,不熟悉的人使用Linux几乎和裸奔没有区别,但是Windows就不一样,作为商业系统,特别是服务器版,开箱即用,只要遵守微软的最佳实践,保持更新,基本不太会遇到大的安全事故。所以说Linux比Windows安全我就从来没有信过。但是我是一直相信L

Read more

记录一次"失败"的Windows Server优化案例

分类:  Windows Server 标签:  #Azure #Virtual Host #Windows #.Net 发布于: 2023-06-15 19:52:01

近期将自己的博客移动基于Windows Server 2019 Datacenter的Azure虚拟机上,这个虚拟机使用了标准的Azure B2s的机型,从参数上看是2个vCore, 4G的内存,IOPS是1280,之前采用的是基于Ubuntu Server 20.04 LTS版本的机器,虚拟机的大小是一样的。但是我发现将博客迁移到Windows Server上之后,发现性能提升巨大,这确实颠覆了我的认知,一直以来我都认为是Linux的性能是要好于Windows的。

Read more