首页 新闻 会员 周边 捐助

.net web开发 关闭浏览器如何关闭多线程跟多task任务

0
悬赏园豆:5 [已解决问题] 解决于 2023-01-29 16:10

小项目 跟两台设备通讯 没写服务端
就写了个web 多线程 读写
弄了个sqlite小型数据库
做数据存储
web展示用的signalr推送到web
就关闭浏览器 不知道怎么把所有线程退出
比如Task.Factory.StartNew(() => { sendData(); });

问题补充:


写了三种跳出循环的条件
但是最后关闭了浏览器
_ = UpdateDataAsync(dt_now, rb1, rb2, rb3);这句话还一直执行,往数据库里面一直在插数据。
或者我是不是应该在打开浏览器的时候做些什么?
因为再次打开浏览器的时候,就又新建一个任务开始插数据了。

_LI的主页 _LI | 初学一级 | 园豆:20
提问于:2022-11-16 09:26
< >
分享
最佳答案
0

不用管,浏览器断开了socket连接也就断开了,如果没什么特别的非托管资源的话,不用做特别的操作

收获园豆:4
!!!!!!!!!!!!!!! | 菜鸟二级 |园豆:258 | 2022-11-16 09:29


请问我这个Task在关闭浏览器还会继续执行嘛?

_LI | 园豆:20 (初学一级) | 2022-11-16 09:32

@_LI: 异步线程何时结束是不确定的,即使你用CancellationTokenSource 来取消task,他也不会立即终止。

!!!!!!!!!!!!!!! | 园豆:258 (菜鸟二级) | 2022-11-16 11:06

@!!!!!!!!!!!!!!!: 写了三种跳出循环的条件,IsCancellationRequested跳出,IsConnect跳出,try跳出,但是浏览器关闭之后还是一直在循环任务。查数据,看我问题补充,该如何break?下次打开浏览器的时候又新增了一个重复任务插数据了。

_LI | 园豆:20 (初学一级) | 2022-11-16 16:04

@!!!!!!!!!!!!!!!: 按理来说,浏览器断开了,连接断开后执行break应该会跳出循环啊,咋还一直插数据呢。

_LI | 园豆:20 (初学一级) | 2022-11-16 16:16
其他回答(1)
0

用using(){}的方法来试试?

收获园豆:1
何生有二十六画 | 园豆:141 (初学一级) | 2022-11-23 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册