一个按钮乱跑!停不下来!程序无法关闭

weixin_43936063 2019-04-18 10:28:33


园代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SJ {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
int x, y;
for (int i = 0; i < 100; i++) {
x = 1;
y = 1;
while (x < 339) {
button1.Location = new Point(x, y);
x++;
Thread.Sleep(7);
}
while (y < 268) {
button1.Location = new Point(x, y);
y++;
Thread.Sleep(7);
}
while (x > 1) {
button1.Location = new Point(x, y);
x--;
Thread.Sleep(7);
}
while (y > 1) {
button1.Location = new Point(x, y);
y--;
Thread.Sleep(7);
}
}

}
}
}

程序无法关闭
...全文
425 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovekworm 2019-04-25
  • 打赏
  • 举报
回复
按钮事件放循环内了,无法正常响应你的关闭操作。放主线程试试。
程序员的键盘 2019-04-25
  • 打赏
  • 举报
回复
大概等14分钟就可以停下来了 不要太过担心
(339*7+268*7)*2*100/1000/60=14
bbjiabcd 2019-04-25
  • 打赏
  • 举报
回复
别用Thread.Sleep(); 用Timer写,改为异步执行
龍月 2019-04-24
  • 打赏
  • 举报
回复
任务管理器 找到程序进程 kill
平底锅锅锅 2019-04-23
  • 打赏
  • 举报
回复
有可能死循环了。
Nekoxy 2019-04-23
  • 打赏
  • 举报
回复

//按钮的事件改成
Thread th = new Thread(() =>
            {
            //此处执行你的循环代码
            for(;;)
            {
                        //所有对按钮之类的控件的操作
                        Invoke(new Action(() =>{    button1.Location = new Point(x, y);             }));
            }); 
            }
           
            th.Start();
weixin_43936063 2019-04-19
  • 打赏
  • 举报
回复
还是不明白各位说的细点么
xian_wwq 2019-04-18
  • 打赏
  • 举报
回复
自己定义个线程,把功能代码放进去
当然线程中不能直接与UI交互,需要使用委托
自行搜 “跨线程访问”
weixin_43936063 2019-04-18
  • 打赏
  • 举报
回复
怎么不放入主线程 又能正常关闭
weixin_43936063 2019-04-18
  • 打赏
  • 举报
回复

两处无法关闭
xian_wwq 2019-04-18
  • 打赏
  • 举报
回复
for (int i = 0; i < 100; i++)
都写了循环了,当然是得把循环执行完

而且代码放在主线程中,
肯定是无法响应用户操作,类似于失控
前言: 在淘宝搜了一圈,感觉成品的行车电脑,功能大多不实用。大部分都是基于标准的OBD协议进行开发,功能无非就是查看故障码、清除故障码、显示转速、车速、水温、进气压力、进气温度等等的一些发动机参数。其实这些参数如果不是维修的话,日常行车基本上没用的。 于是萌发了自己制作一款多功能行车电脑的念头。于是开始查资料、研究车辆的OBD协议,设计线路板、编程、调试,经过1年多的时间,经过了3个版本的修改,最终做成了现在的这款行车电脑。自我感觉还不错,用的效果也很好。现在开源出来给大家。 OBD行车电脑放在车上的效果: 整个系统采用ATmega64作为主控芯片,用24064的黄绿液晶作为显示屏(T6963C驱动),DS1302作为时钟芯片,读取时间。用2个DS18B20温度传感器检测车内及车外温度,用C3-370C的GPS模块作为GPS接收装置,读取经纬度、海拔、航向等信息。在发动机的OBD接口上安装一个蓝牙的OBD模块(买的),系统板上也采用一个蓝牙串口模块,系统板和车辆之间通过蓝牙串口来透明的传输发动机数据。电源采用的是LM2596,其实整机功耗不大,用7805也可应付。按键采用的是4个独立按键(上图搞错了)其实这4个按键我借用了乐风的电控后视镜按钮。(我的车是低配,是手动调节后视镜,但是有安装电调后视镜按钮的位置。所以我买了一个后视镜调节按钮,当作了系统的按键)。系统板上留出了ISP接口和JTAG接口,方便下载程序和在线调试。 目前实现的功能: 1.车速的实时显示。(这个是实际的车速,而不是表速。表速根据国标规定,比实际速度低一些) 2.超速报警功能。(设定一个报警值,当车速超过以后,蜂鸣器报警。可用按键关闭。高速上开车相对方便) 3.小计里程统计。(车速表上的小计里程一般最大统计1000Km,这个可以统计65535Km。可通过长按下键来清零) 4.每月行驶里程统计。(统计每个月的行驶里程,并可显示。每月自动清零,不可手动清零) 5.本次行驶平均油耗统计。(显示本次行驶的平均油耗,单位是 L/100Km) 6.历史平均油耗统计。(车辆在一个大的用车时间内的平均油耗) 7.剩余燃油续航里程。(根据当前的油耗计算出的油箱内燃油还能跑多少公里) 8.当前行驶方向。(分八个方向显示。东、西、南、北、东南、东北、西南、西北) 9.当前位置经纬度坐标。(度、分、秒格式) 9.当前位置海拔高度。 10.时间及日期显示(年、月、日、星期、时、分、秒根据GPS自动校时,无需手动调整) 11.车内温度显示。 12.车外温度显示。 13.本次行程统计。(在本次行车停车关机时显示,显示的信息有:本次行驶时间、本次行驶里程、本次行驶平均油耗、本次行驶最高速度、本次行驶平均速度) 14.最高速度记录。(记录开车的最高速度) 15.加油记录。(每次加油后,开机时可自动识别出加油,可记录本次加油单价、加油量、总价、加油时间) 16.用油统计。(可统计自某个时间以来,总的加油量、总天数、总行驶里程、总加油费用、总的平均油耗、平均费用,包括每天的费用和每公里费用) 17.根据环境光线,自动开启仪表照明。(这个功能硬件预留,程序中没设计。后序陆续添加) 先看一下线路板。这个线路板是画好以后在网上找的PCB厂家给做的。当时在验证设计时,曾经用感光法自制过PCB板,专门买了感光蓝油、PCB覆铜板,蚀刻液,用喷墨打印机打印PCB图到感光胶片上,覆盖在涂了感光蓝油的覆铜板上,用台灯曝光15分钟,然后显影、脱膜、蚀刻。效果很好,最小线宽可以做到10mil!但是打孔是个头疼问题。全是1mm一下的孔,太难钻了,而且过孔问题很难解决。所以后来还是让PCB厂家做的板。 下面是用的LCD屏。24064的黄绿点阵。T6963C的控制器。这个屏是我在单位的一台废旧设备上拆下的。工业级的。还不错。 屏和主板是两层设计,中间的是蓝牙串口模块。 下面介绍一下各个界面 第一屏,最常用的信息,开机后就在这个界面 第二屏,主要显示GPS的一些信息。按按钮上的“右”键切换到第二屏。 说明: 程序是用C语言写的。本人水平有限。我自己看着都很乱。附件中含有清晰版的原理图和源程序。用CodeVisionAVR V2.04.4a编译。压缩包内自带工程文件与源文件。编译没有错误,但是有警告。注意源文件中有DS1302.lib和DS18B20.lib两个文件,要拷贝到CodeVisionAVR的安装目录下的lib文件夹内,替换系统自带的两个文件。因为我对这两个文件做了修改。 一直想弄个外壳,在淘宝上找了很久,也没找到合适的外壳。没有外壳就暂时裸奔吧! 说说使用的感受: 1.跑高速时很爽!在这个安装位置正好,需要看时速时眼扫一下就可以,或者设定好超速报警,开就是了,根本不用低头看车速! 2.平均油耗,至少在我的车上还是比

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧