如何在 WinForm 终止时打开数据库连接?
Posted
技术标签:
【中文标题】如何在 WinForm 终止时打开数据库连接?【英文标题】:How to open a database connection on termination of a WinForm? 【发布时间】:2021-07-13 06:52:36 【问题描述】:当应用程序通过终止/终止关闭时,我正在寻找一种将数据发送到我的数据库服务器的方法。到目前为止,我发现可以在Form的Application.Run()
之后运行一些代码,但是,在连接打开功能之后,代码似乎停止了。下面是一个演示。
static void Main()
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new xxxForm());
Console.WriteLine("Runs Fine.");
if (UserSession != null)
Console.WriteLine("Runs Fine.");
mysqlConnection Connection = new MySqlConnection("Server=xxx; database=xxx; UID=xxx; password=xxx");
Console.WriteLine("Runs Fine");
Connection.Open();
Console.WriteLine("STOPS RUNNING");
string query = "UPDATE users SET clientstatus = 'offline' WHERE uuid = '" + UserSession.UUID + "' ";
var cmd = new MySqlCommand(query, Connection);
cmd.ExecuteNonQuery();
Console.WriteLine("Doesn't Run");
UserSession = null;
Console.WriteLine("Doesn't Run");
我想知道是否有办法做到这一点,因为我似乎找不到太多关于这样做的文档。
注意:我之前在此下编写了很多代码并且它可以工作,但是由于某种原因连接没有。
【问题讨论】:
问:有没有办法[在 WinForm 终止时做点什么]?答:是的:只需在Application.ApplicationExit 上定义一个事件处理程序。问:您显示的代码实际上是来自“WinForm”应用程序吗?如果是这样,您的目标是哪个平台?赢32? 。网? .Net Core 3.1? .Net 5? 当你说杀死/终止时,你的意思是通过任务管理器吗?However, code seems to stop after the connection opening function.
,程序是否退出,是否抛出任何错误?
ApplicationExit 有效,但它不适用于终止应用程序,仅适用于像 Application.Exit()
这样的预定退出。是的,我的意思是任务管理器或其他“强制”应用程序关闭的方法。我知道我可以制作一个辅助应用程序,只是检查它是否死了,但这很丑陋,而不是我正在寻找的东西。程序以代码“1”退出。
好吧,我会说你有点走投无路了。杀死进程杀死进程死亡,这意味着没有更多的代码与该进程将要执行
【参考方案1】:
当应用程序通过终止/终止关闭时
你不能。杀死应用程序会暂停它的执行并将其从内存中删除。它没有机会做更多的工作
您必须改为推断它:
拥有一个所有应用程序都连接到的服务器,可以检测连接丢失并使用它来标记用户离线 让您的应用每 X 秒更新一次用户特定字段,例如用户表中的LastSeenDateTime
列。如果应用程序被杀死,它将停止更新。过去 LastSeen 超过 2X 秒的任何人都可能处于离线状态
【讨论】:
以上是关于如何在 WinForm 终止时打开数据库连接?的主要内容,如果未能解决你的问题,请参考以下文章
C# 测试SQL数据库连接时 winform 界面如何实时刷新控件。
C#Winform中,我在查询数据时等待时间过长,想用一个进度条显示机器正在查询,请问如何实现?