弹出新窗体后界面卡死
public void UpdateGrid()
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
using (SqlCommand command = new SqlCommand("select ID From [dbo].[Messages] where isOK=0", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
SqlDataReader sdr = command.ExecuteReader();
while (sdr.Read())
{
int ID = (int)sdr["ID"];
TT.ID = Convert.ToString(ID);
//
try
{
Messagescs x = new Messagescs();
x.Show();
}
catch (Exception re)
{
MessageBox.Show(re.Message);
}
System.Threading.Thread.Sleep(6000);
string updata = string.Format("update [Messages] set isOK=1 where id=" + ID);
SqlCommand upgx = new SqlCommand(updata, connection);
connection.Open();
upgx.ExecuteNonQuery();
connection.Close();
}
sdr.Close();
connection.Close();
}
}
}
public void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
UpdateGrid();
}
这是用SqlDependency 数据库监听做的一个窗体,大概想实现的效果是当有新纪录写入后isok默认是0.然后程序会监听数据库信息,监听到有0的就读取出来,然后更新为isok为1,现在的问题是打开程序后 当数据库写入数据后新弹出来的Messagescs子窗体就会卡死,求指导
{
using (SqlConnection connection = new SqlConnection(_connStr))
{
using (SqlCommand command = new SqlCommand("select ID From [dbo].[Messages] where isOK=0", connection))
{
command.CommandType = CommandType.Text;
connection.Open();
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
SqlDataReader sdr = command.ExecuteReader();
while (sdr.Read())
{
int ID = (int)sdr["ID"];
TT.ID = Convert.ToString(ID);
//
try
{
Messagescs x = new Messagescs();
x.Show();
}
catch (Exception re)
{
MessageBox.Show(re.Message);
}
System.Threading.Thread.Sleep(6000);
string updata = string.Format("update [Messages] set isOK=1 where id=" + ID);
SqlCommand upgx = new SqlCommand(updata, connection);
connection.Open();
upgx.ExecuteNonQuery();
connection.Close();
}
sdr.Close();
connection.Close();
}
}
}
public void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
UpdateGrid();
}
这是用SqlDependency 数据库监听做的一个窗体,大概想实现的效果是当有新纪录写入后isok默认是0.然后程序会监听数据库信息,监听到有0的就读取出来,然后更新为isok为1,现在的问题是打开程序后 当数据库写入数据后新弹出来的Messagescs子窗体就会卡死,求指导
...全文
相关推荐
QT多线程—主界面卡死解决方案
在编程领域,特别是GUI(图形用户界面)应用开发中,保持用户界面的流畅性是至关重要的。当程序执行耗时操作时,如果这些操作在主线程中运行,会导致UI无响应,也就是我们常说的“卡死”。
C# Winform弹出进度条视窗:基于IProgress<T>的模态等待窗体实现
在桌面应用开发中,耗时操作往往会阻塞UI线程,导致窗口假死与用户焦虑。通过异步任务与进度反馈机制,可以在不卡界面的前提下实时展示执行状态。Winform作为经典桌面框架,跨线程更新UI是常见痛点,传统Invoke方式容易引发死锁和闪烁。IProgress<T>与SynchronizationContext结合提供安全回调通道,搭配模态窗体可实现强制等待的可复用进度视窗。本文从弹窗设计、跨线程通信、取消支持与多段进度合并等工程细节出发,给出完整的C#实现,帮助开发者快速构建稳定的等待交互组件。
解决python tkinter界面卡死的问题
总的来说,Python Tkinter界面卡死的问题可以通过合理利用多线程来解决。
异步进度条弹出窗体
在IT行业中,尤其是在Windows应用程序开发领域,用户界面的体验至关重要。"异步进度条弹出窗体"是一个常见的设计模式,用于提供用户反馈,让用户知道应用程序正在进行后台处理且并未卡死。
绝望的2个小时,拯救Ubuntu 18.04 界面卡死
在本篇博客中,作者分享了一次在Ubuntu 18.04系统遭遇严重界面卡死问题的经历。面对这种情况,作者表现出极度的焦虑,因为电脑中存储着重要的毕业设计资料和未完成的代码,这些都需要在第二天提交。过去


