C# 如何在WinForm终止时打开数据库连接?

C# 如何在WinForm终止时打开数据库连接?,c#,mysql,database,winforms,C#,Mysql,Database,Winforms,我正在寻找一种在应用程序关闭时通过终止/终止将数据发送到数据库服务器的方法。到目前为止,我发现可以在表单的应用程序.run()之后运行一些代码,但是,代码似乎在连接打开函数之后停止。下面是一个演示 static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);

我正在寻找一种在应用程序关闭时通过终止/终止将数据发送到数据库服务器的方法。到目前为止,我发现可以在表单的
应用程序.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");
        }
我想知道是否有一种方法可以做到这一点,因为我似乎找不到太多关于这样做的文档

注意:我以前在这方面写过很多代码,但是由于某些原因,连接不起作用

通过终止/终止关闭应用程序时

你不能。终止应用程序将暂停其执行并将其从内存中删除。它没有机会做更多的工作

您将不得不推断它:

  • 拥有一个所有应用程序都连接到的服务器,该服务器可以检测连接丢失并使用它将用户标记为脱机
  • 让您的应用程序每X秒更新一个特定于用户的字段,例如用户表中的
    lastseendatime
    列。如果应用程序被终止,它将停止更新。任何在过去最后一次看到时间超过2秒的人都可能处于脱机状态

Q:有没有办法[在WinForm终止时做点什么]?答:是:只需在上定义一个事件处理程序。问:您显示的代码实际上是来自“WinForm”应用程序吗?如果是,您的目标是哪个平台?Win32。净。净核心3.1。Net 5?当你说终止/终止时,你的意思是通过任务管理器吗?
然而,代码似乎在连接打开功能后停止。
,程序是否退出,是否抛出任何错误?ApplicationExit可以工作,但它与终止应用程序无关,仅在计划退出时,如
application.exit()
。是的,我指的是任务管理器或其他“强制”关闭应用程序的方法。我知道我可以做一个二次申请只是检查它是否死亡,但这是丑陋的,不是我要找的tbh。程序以代码“1”退出。好吧,我想说的是,你现在有点死胡同了。终止该进程将终止该进程,这意味着该进程将不再执行任何代码