C# 拦截关机消息后保存相关数据的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:48:18
我想在系统关机前向数据库查询一条数据,并且写入一条数据,我试验过保存十万个数字,但是一千万就不行了。怎么才能稳保系统在自己所有数据写完之后才关机呢。
protected override void WndProc(ref Message m)
{
int WM_ENDSESSION = 0x0011;
if (m.Msg == WM_ENDSESSION)
{
我想写入数据库数据,可能需要时间
}
base.WndProc(ref m);
protected override void WndProc(ref Message m)
{
int WM_ENDSESSION = 0x0011;
if (m.Msg == WM_ENDSESSION)
{
截取消息 注销 关机 重启 不知道这三个消息id多少,怎么截取?

写入数据库数据,可能需要时间
根据消息 来执行 注销 关机 或 重启
}
base.WndProc(ref m);

定时写入临时文件,这样就算关机再重启机器,也可以从临时文件提取上次关机前未操作的数据,就好比winxp非法关机,开机自检一样,

无法做到你说的关机前拒绝关机,写入数据库,如果用户直接拔电源呢??你的程序如何控制不让用户直接拔电源???

分段事务保存

1. 可以考虑一下事务
全部成功 Commit
否则 Rollback

2.除非你能调用到本地计算机关机程序 那就OK(否则 f)

这个逻辑不太好, 如果用户用任务管理器结束你的程序,数据就会丢失了啊

学习ing