V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  bthulu  ›  全部回复第 35 页 / 共 57 页
回复总数  1137
1 ... 31  32  33  34  35  36  37  38  39  40 ... 57  
@ComputerIdiot 看了, 里头用 Task.Run 启动一个 await Task.Delay(xxx)的任务来实现的.
```
static void RT(Action action, int seconds, CancellationToken token)
{
Task.Run(async () => {
while (!token.IsCancellationRequested)
{
action();
await Task.Delay(TimeSpan.FromSeconds(seconds), token);
}
}, token);
}
```
如果不用 Task.Run, 直接定义一个 async Task 方法调用, 像下面这样, 这跟上面那种有啥区别, 是不是都是一个意思?
还有, 这个任务启动, 且主线程从 RT 方法里退出后, 就没有任何地方引用这个无限循环的任务了, 长时间运行过程中, 这个任务有没有可能会被 GC 回收掉?
```
static void RT(Action action, int seconds, CancellationToken token)
{
_ = RT0(action, seconds, token);
}
static async Task RT0(Action action, int seconds, CancellationToken token)
{
while (!token.IsCancellationRequested)
{
action();
await Task.Delay(TimeSpan.FromSeconds(seconds), token);
}
}
```
@ComputerIdiot 多嘴再问一句, C#里有没有什么办法能实现定时任务呢? 就是任务完成后, 隔 2 秒后开始执行下一次任务, 不是每隔 2 秒执行一次.
C#自带的定时器只能实现每 2 秒执行一次. 我现在用的 BackgroundService, 在 ExecuteAsync 方法里 await2 秒钟, 再在 Program.cs 里 AddSingleton<IHostedService>(...)注入进去.
但是现在碰到的问题是, 需要在前端页面上激活一个新任务, 停止一个旧任务. 那就不能在 Program.cs 里注入了, 因为你根本不知道前端会激活哪个任务.
如果是 java 的话, 调用自带线程池的 ScheduleAtFixedDelay 就行了, C#我愣是想不出.
还有, 有一系列的策略类, 需要将策略类的配置项注册到配置中心, 然后在前端启用一个策略时就 new 一个策略实例, 前端未启用时是不用 new 的. 那这个注册方法写到哪里去呢? 本着解耦的原则, 应该就写在策略类自身静态代码块里. 但 C#比较尴尬的是, 静态代码块只有在类实例化或有静态属性被调用时才会执行. 导致根本就不会执行注册代码块. 而注册代码块不执行, 那注册中心根本就不知道有这么个策略类, 前端页面也就不会显示这个策略类, 也就是根本不会实例化. 要么就只能在注册中心里手动注册. 那这样增加一个策略类时, 还必须修改注册中心的代码. 如果能像 java 那样扫描包下的类加载一下就自动调用静态代码块就好了.
@ComputerIdiot C#依赖注入不够看呀, 功能太简陋了
@yazinnnn 这生成的文件也太大了, 无外部依赖的简单 http 服务, 可执行文件大小无压缩情况下要做到 1M 以下
2022-05-12 09:02:59 +08:00
回复了 gaozizhong 创建的主题 程序员 新手装机,老哥们帮忙看看怎么样!
只说一点, 后端内存很吃紧, 建议光威 DDR4 3200 16GX4, 64G 插满. 预算吃紧就 16Gx2, 以后视情况在加两根
2022-05-12 08:59:06 +08:00
回复了 cnbatch 创建的主题 Android 雷蛇手机应该是彻底退场不干了吧?换什么手机好呢?
二手雷蛇啊, 有 4k 预算可以买三台, 总有一台不翻车
2022-05-11 17:54:16 +08:00
回复了 id7368 创建的主题 优惠信息 数字人民币活动: 8~80 元无门槛消费券 纯羊毛
8 块, 别看了, 50 的是极少数, 绝大部分是 8 块
2022-05-11 17:37:02 +08:00
回复了 Aliberter 创建的主题 程序员 公正评价,这代码什么水平
@zdt3476 bool 跟 true 比较是有用的, 有可能你的这个对象里没有这个 bool 属性, 如果直接 if(a.b)就会出错, 而 if(a.b == true)却能整厂运行
2022-05-10 16:54:41 +08:00
回复了 bam9 创建的主题 程序员 公司目前比较闲,有没有好的前端项目可以让我参与下
2022-05-10 16:35:02 +08:00
回复了 phub2020 创建的主题 问与答 系统分区问题, win 系统分盘跟不分盘的区别是啥?
@Tumblr 很多对有注册表或环境变量依赖的程序, 你双击一下主 exe 文件, 会自动添加注册表和环境依赖, 典型如 WPS, 迅雷.
对于不需要系统依赖的程序,随便你放在哪里,只要不格盘都不受影响. 对了, 所以放 D 盘, 我重装系统后啥都不用干. 你放 C 盘, 难道你以后每次都从 windows.old 里一层层目录去找? 要么就得从 windows.old 里拷出来. 我放 D 盘我直接省了这一步不好么? 何况文件夹多了的时候, 拷出来的工作量也不低.
2022-05-10 15:27:17 +08:00
回复了 Aluhao 创建的主题 问与答 ThinkBook 16p 和 拯救者 Y9000P 2022 如何选择?
再等等 ThinkBook 16p 2022, 六月份会开始预热, 应该能赶上今年双十一
2022-05-10 15:25:11 +08:00
回复了 phub2020 创建的主题 问与答 系统分区问题, win 系统分盘跟不分盘的区别是啥?
不要信他们的什么重装系统不会丢数据, win 重装, 会把你原来 C 盘内容全盘复制到 windows.old 文件夹, 你后面还得费力把里头有用的文件一个个拷出来复制到新目录. 而如果你分了个 D 盘, 那么你什么都不用做.
2022-05-10 12:47:08 +08:00
回复了 revalue 创建的主题 问与答 提前一个星期知道自己要被裁了,要把年假都请完吗?
能休就休, 别指望公司良心
2022-05-10 08:42:52 +08:00
回复了 kujio 创建的主题 Windows windows 越用越心烦,记录一下使用一个月小新 Pro16 的心路历程
楼主你是不是忘了 mklink 这个命令了, 用它将 c 盘目录连接到 d 盘去, 软件安装的时候点点点就行了.
2022-05-07 18:03:53 +08:00
回复了 irisdev 创建的主题 程序员 mysql 怎么迁移数据库到另一台机器
哪用这么麻烦, 直接 navicat 数据传输就行了
2022-05-07 08:43:29 +08:00
回复了 lotusp 创建的主题 程序员 技术债管理怎么做?
@ericgui 原来跑的好好的, 你做重构, 把代码搞搞好, 能给公司带来收益吗? 没有产出, 还要给你发工资, 是个老板都不干呀
主要是吃内存, 并且没有内置模块, 稍微干点正儿八经的活, 就要引入 maven, 都上 maven 了, 那不得再整个 IDE? 这样一看, 是不是就很重了
2022-05-06 18:17:10 +08:00
回复了 yuthelloworld 创建的主题 React 2022 年 react 生态,大家都用啥
@agileago 前端呢? react 跟前后端八竿子打不着吧
2022-05-06 18:06:07 +08:00
回复了 yuthelloworld 创建的主题 React 2022 年 react 生态,大家都用啥
@agileago 难道不是吗? 这些库, 在国内有几个人用? 你去看看 boss 直聘前端招聘, 有几个需要会这些的?
2022-05-06 17:56:48 +08:00
回复了 yuthelloworld 创建的主题 React 2022 年 react 生态,大家都用啥
@agileago 装饰器语法被绝大多数 js 开发者视为洪水猛兽, 注定是不会流行的
1 ... 31  32  33  34  35  36  37  38  39  40 ... 57  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3116 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 13:18 · PVG 21:18 · LAX 05:18 · JFK 08:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.