C#线程之间访问变量

C#线程之间访问变量

无聊的时候,想着好久都没有接触C#程序了,就随便写了写,想着计算一定时间内鼠标点击次数,测下手速/(ㄒoㄒ)/~~

在这里插入图片描述
点击Click后,每点一次,右侧数字就+1,Time处开始计时

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace ClickTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Thread thread = new Thread(Caculate);
            thread.Start();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            PubClass.Times++;
            PubClass.TimerFlag = 1;
            label2.Text = Convert.ToString(PubClass.Times);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            PubClass.Times = 0;
            PubClass.Second = 0;
            label2.Text = Convert.ToString(0);
            label4.Text = Convert.ToString(0);
            PubClass.TimerFlag = 0;
        }
        public void Caculate()
        {
            System.Timers.Timer t = new System.Timers.Timer(1000);   //实例化Timer类,设置间隔时间为1000毫秒;      
            t.Elapsed += new System.Timers.ElapsedEventHandler(theout); //到达时间的时候执行事件;
            t.AutoReset = true;   //设置是执行一次(false)还是一直执行(true);   
            while(true)
            {
                if (PubClass.TimerFlag == 1)
                {
                    t.Enabled = true;     //是否执行System.Timers.Timer.Elapsed事件; 
                    if (PubClass.TimerFlag == 0)
                    {
                        t.Enabled = false;     //是否执行System.Timers.Timer.Elapsed事件;
                        break;
                    }
                }
            }
        }
        public void theout(object source, System.Timers.ElapsedEventArgs e)
        {
            PubClass.Second++;
            label4.Text = Convert.ToString(PubClass.Second);
        } 
    }
}

启动后,点击Click按钮,会报错,无法访问线程中的变量(即界面上控件显示的内容是线程中操作的变量)
在这里插入图片描述
上网查找解决方案,一位大神建议如下更改,不禁赞叹,是大神!解决!
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页