WinForm 防止因为各种因素的操作导致主窗体冻结、卡死的解决方法

简介:

定义变量

private bool bRetrun = false;

private ManualResetEvent meDo;

定义一个可以公用的静态变量

public class CommonData

{

    public static bool CloseFrom { getset; }

}

 

主程序

Thread t = new Thread(new ThreadStart(TestDB));

meDo = new ManualResetEvent(false);

t.Start();

this.Hide();

if (new frmCloes().ShowDialog() == DialogResult.OK)

{

    this.Show();

}

meDo.WaitOne();

if (bRetrun) return;

 

把会卡死的程序放到方法里执行,比如TestDB

private void TestDB()

{

    if (!SysConfig.DBConnectionRing())

    {

        MessageBox.Show("选择的数据库连接失败,请检查!""操作提示"MessageBoxButtons.OK, MessageBoxIcon.Error);

        bRetrun = true;

    }

    else

    {

        bRetrun = false;

    }

    meDo.Set();

    CommonData.CloseFrom = true;

}

 

创建一个用于显示进程的窗体,做门面

在该窗体添加一个label和一个timer

private int RunCount = 0;

private void tmr_Tick(object sender, EventArgs e)

{

    if (CommonData.CloseFrom)

    {

        this.DialogResult = DialogResult.OK;

        Close();

    }

    else

    {

        RunCount++;

        if (RunCount > 10)

        {

            lblStatus.Text = "操作正在进行,请稍后";

            RunCount = 0;

        }

        lblStatus.Text += ".";

    }

}


本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/archive/2010/08/31/1813474.html,如需转载请自行联系原作者


目录
相关文章
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
527 0
|
开发工具 git
Git从远程仓库拉取指定的分支
Git从远程仓库拉取指定的分支
2696 0
|
Windows
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
关于:未能加载文件或程序集“ICSharpCode.SharpZipLib”或它的某一个依赖项异常的解决方案
1172 0
|
6月前
|
存储 安全 Unix
Syslog 管理工具
Syslog是一种基于TCP/IP网络传输日志消息的标准协议,广泛应用于路由器、交换机、防火墙及Unix/Linux服务器等设备的日志管理。通过标准化的消息格式,Syslog实现了集中化日志收集、存储与分析,有助于提升网络性能、减少系统停机时间并强化安全策略。其核心组件包括Syslog侦听器(接收日志)、数据库(存储与查询)和过滤工具(分析特定日志)。此外,Syslog支持8个优先级分类,便于快速定位关键问题。借助日志管理工具如EventLog Analyzer,管理员可实现实时告警、日志归档、合规性报告等功能,从而更高效地监控和维护网络基础设施。
218 2
|
敏捷开发 Kubernetes Cloud Native
【阿里云云原生专栏】跨云部署与管理:阿里云云原生技术的多云策略
【5月更文挑战第25天】阿里云云原生技术提供多云策略,助力企业高效跨云部署与管理。通过容器化(如Kubernetes)、服务网格等,实现应用一致性与可移植性;统一资源管理,简化跨云操作。挑战包括数据同步、网络问题和平台差异,但阿里云的解决方案为企业在多云环境中实现资源优化、业务敏捷和系统可靠性提供了强有力支持。随着云计算发展,阿里云将持续演进其多云策略,为企业数字化转型提供保障。
331 1
|
编解码 Dart 网络协议
Flutter如何玩转超低延迟RTSP/RTMP播放,跨平台视频流体验大升级,让你的应用秒变直播神器!
【9月更文挑战第3天】Flutter作为谷歌推出的跨平台移动UI框架,凭借高性能和丰富的生态系统广受好评。本文详细介绍如何在Flutter应用中实现低延迟的跨平台RTSP/RTMP播放,并提供具体示例代码。首先介绍了如何使用`flutter_vlc_player`播放RTSP流,然后讨论了优化视频播放以降低延迟的方法,包括调整播放器配置等。通过选用合适的播放器插件并进行优化,Flutter可在视频流播放领域提供卓越的用户体验。随着生态的发展,Flutter有望成为视频流媒体开发的首选框架。
1300 6
|
Kubernetes Cloud Native Linux
如何使用 Containerfile/Dockerfile 构建 .net 镜像?
构建轻量级的 .NET Core 镜像通常涉及到几个关键步骤,主要是选择正确的基础镜像、使用多阶段构建、优化文件结构以及清理不必要的文件。.NET 8 在云原生方面的支持有了显著的增强,这些改进旨在提高性能、减少资源消耗、简化部署流程以及提升应用程序的可观察性和可维护性。
889 5
如何使用 Containerfile/Dockerfile 构建 .net 镜像?
|
11月前
|
NoSQL Redis 数据库
Redis 数据备份与恢复
10月更文挑战第20天
177 2
Appium设置会话时长,解决调试代码时session失效的问题
Appium设置会话时长,解决调试代码时session失效的问题
356 0
Uncaught runtime errors: × ERROR Cannot read properties of undefined (reading ‘ vue2&vue-router兼容性问题
Uncaught runtime errors: × ERROR Cannot read properties of undefined (reading ‘ vue2&vue-router兼容性问题
770 0