当时钟事件声明为过程变量 让system.threading.timer时钟失效

这个项目的小模块就是画label 控件到tablepayoutpanel表单 之中,

中间用到了时钟,事件(带返回值的),哈希表 。由于时钟定义在 form1的启动构造函数中导致了form1,启动完毕之后时钟停止运行,结果画label画到一半就停了,查找问题,甚是头大,后经大神帮忙,发现了过程变量的问题,在此总结。主要看红字标出部分

public Form1()
{
InitializeComponent();

//声明启动绑定事件
// OneCodeEventClass edt = new OneCodeEventClass();
OneCodeEvent += new OneCodeHander(MainPanel_Paint);
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(OneCodeTest), null, 0, 100);

}

程序应该改为:

public partial class Form2 : Form
{
public System.Threading.Timer timer;  //添加了此行,在构造函数外声明全局变量
public Form2()
{
InitializeComponent();

//初始化颜色哈希表 1为未使用,0为使用,初始全部为1。
StartColorHashble();
//时钟 激活启动事件返回值字符串到MainPanel_Paint
OneCodeEvent += new OneCodeHander(MainPanel_Paint);
timer = new System.Threading.Timer(new TimerCallback(OneCodeTest), null, 0, 100);

PointXY.X = 0;
PointXY.Y = 0;
}

结果程序运行正常,在此谢谢帮我调试的大神carry 。世上好人多。红包发起。

时间: 2024-12-05 08:14:47

当时钟事件声明为过程变量 让system.threading.timer时钟失效的相关文章

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

声明四个变量,姓名、年龄、性别和身高,打印出来。

/** * @author 蓝色以太 * 声明四个变量,姓名.年龄.性别和身高,打印出来. */ public class DeclareVariables { public static void main(String[] args) { String name="张三"; int age=20; char gender='男'; double height=1.78; System.out.println("姓名:"+name); System.out.pri

在SQL Server2008中声明和初始化变量的新写法

1 DECLARE @temp INT = 1; 2 PRINT @temp; 或者 1 DECLARE @temp AS INT = 1; 2 PRINT @temp; 能够用同一语句声明和初始化变量是SQL Server2008的新功能.在早期版本中,应使用单独的DECLARE和SET语句.

android点击事件的分发过程

转载请注明出处 http://blog.csdn.net/a992036795/article/details/51698023 本文将讲述android点击事件的分发过程 我的上一篇文章讲述了android点击事件的来源,本文接着讲述当点击事件传输到Activity之后 分发的过程是什么样的. 上一篇文章链接: http://blog.csdn.net/a992036795/article/details/51690303 通过上一篇文章我们知道,事件最终会通过activity分发到Phone

Android Touch事件的分发过程

一.不知道你是否在涉及到Android触屏事件的时候有过如下的疑问: 1.View的onTouchEvent()方法返回true和false有什么区别? SDK给出的解释很简单:"返回true代表该事件已经被处理过了,返回false则相反",这句话完全没有解释清楚问题. 2.View的onTouchEvent()方法在处理ACTION_DOWN的时候返回true,在处理ACTION_MOVE的时候返回false,代表着是处理了还是没处理?返回super.onTouchEvent()又是

ios之事件的传递过程总结

1 一.事件的传递过程 2 1.用户点击屏幕,产生一个UIEvent(触摸事件)对象 3 2.UIApplication最先接收到这个事件,并且把这个事件添加到一个事件队列中 4 3.UIApplication会将事件队列中的所有事件按顺序取出来进行传递和处理 5 4.UIApplication首先会将事件对象传递给app的主窗口 6 5.由主窗口找出最合适的UIView来处理这个事件 7 1> UIApplication -> UIWindow -> controller.view 8

[js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了

js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log("ok") } fn(); //ok fn = 22; //赋值是允许的 fn(); // Uncaught TypeError: fn is not a function function fn() { console.log("ok !!!");} fn(); //

彻底解决 TypeScript 报错:“无法重新声明块范围变量”的问题

背景 当使用 TypeScript + TSlint + Babel + Jest 搭建开发环境时,在开发过程中偶尔会被 IDE 提示「无法重新声明块范围变量」,从而导致编译出错,报错图示如下: 相关开发环境配置如下: typescript: ^3.5.3 tslint: ^5.19.0 babel: ^7.0.0 jest: ^24.9.0 ts-jest: ^24.0.2 解决方案 之所以 tslint 会提示这个错误,是因为在 Commonjs 规范里,没有像 ESModule 能形成闭包

Java获取系统环境变量(System Environment Variable)和系统属性(System Properties)以及启动http://m.jb51.net/article/83454.htm参数的方法

系统环境变量(System Environment Variable): 在Linux下使用export $ENV=123指定的值.获取的方式如下: Map<String,String> map = System.getenv(); Set<Map.Entry<String,String>> entries = map.entrySet(); for (Map.Entry<String, String> entry : entries) { System.o