解决多线程下WinForm卡死问题

本文详细分析了WinForm应用中由于多线程操作导致的卡死问题,并提供了解决方案。通过加锁机制防止并发执行,以及利用Invoke处理跨线程操作,确保了UI线程的安全。
摘要由CSDN通过智能技术生成
在WinForm窗体中,会根据需要为窗体放置一个Timer组件来实现定时执行某个任务的功能。例如下面的程序:
版本1
public partial class MainForm : Form {
        private readonly System.Timers.Timer timer;


        public MainForm() {
            InitializeComponent();
            timer = new System.Timers.Timer();
            timer.Interval = 120000;
            this.Load += new System.EventHandler(MainForm_Load);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
        }


        private void timer_Elapsed(object sender ,System.Timers.ElapsedEventArgs e) {
            // 一个很耗时的线程
       for (int i = 0; i <10; i++) {
                this.Text = string.Format("当前时间是{0:yyyy-MM-dd hh:mm:ss}", System.DateTime.Now);
                Thread.Sleep(60000);
            }
        }


        private void MainForm_Load(object sender ,System.EventArgs e) {
            timer.Start();
        }


        public static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(fals
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值