我有一个循环一系列元素的方法,并将一些东西添加到数据库中。我正在使用SignalR将这种情况的实时进度从服务器发布到客户端。一切正常。
但是,当我关闭浏览器和/或点击“停止调试”按钮时,该方法会在后台继续运行!我可以说,因为当我查询数据库时,它仍然在添加记录,当我启动项目时,它会立即触发任何服务器端断点 - 即使在启动时没有调用此方法。
如果我运行代码
for(int i=0;i<1000;i++) {
do stuff with i
}
然后在中途停止,我希望它会停止。但SignalR似乎一直持续到1000,即使我已经停止并关闭了浏览器。
答案 0 :(得分:0)
如果在服务器端执行某些操作时关闭Web浏览器并且此操作是使用SignalR启动的,则操作不会结束。您需要在服务器执行长时间运行操作时从服务器发送心跳,并且如果某些心跳未通过客户端,您的服务器代码将取消它。
Heartbeats 就像 ping 。它只是在时间间隔内从客户端发送 hello 并发出我在这里!消息。