小项目 跟两台设备通讯 没写服务端
就写了个web 多线程 读写
弄了个sqlite小型数据库
做数据存储
web展示用的signalr推送到web
就关闭浏览器 不知道怎么把所有线程退出
比如Task.Factory.StartNew(() => { sendData(); });
写了三种跳出循环的条件
但是最后关闭了浏览器
_ = UpdateDataAsync(dt_now, rb1, rb2, rb3);这句话还一直执行,往数据库里面一直在插数据。
或者我是不是应该在打开浏览器的时候做些什么?
因为再次打开浏览器的时候,就又新建一个任务开始插数据了。
不用管,浏览器断开了socket连接也就断开了,如果没什么特别的非托管资源的话,不用做特别的操作
请问我这个Task在关闭浏览器还会继续执行嘛?
@_LI: 异步线程何时结束是不确定的,即使你用CancellationTokenSource 来取消task,他也不会立即终止。
@!!!!!!!!!!!!!!!: 写了三种跳出循环的条件,IsCancellationRequested跳出,IsConnect跳出,try跳出,但是浏览器关闭之后还是一直在循环任务。查数据,看我问题补充,该如何break?下次打开浏览器的时候又新增了一个重复任务插数据了。
@!!!!!!!!!!!!!!!: 按理来说,浏览器断开了,连接断开后执行break应该会跳出循环啊,咋还一直插数据呢。
用using(){}的方法来试试?