我正在尝试制作带有两个按钮Start和Stop的程序。这是代码:
namespace rcToOnBoardPC
{
public partial class Form1 : Form
{
Communication objCommunication = new Communication();
DataTable A = new DataTable();
public int a;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
objCommunication.intialiseCAN();
a = 1;
A = Data.GetAccessDataTable("TestData", "testDB.accdb");
this.dataGridView1.DataSource = A;
objCommunication.ID0008Update10ms(A,a);// Runs Infinte While if a=1
}
private void button2_Click(object sender, EventArgs e)
{
a = 0;
string timeEnd = DateTime.Now.ToString();
objCommunication.unIntialiseCAN();
Environment.Exit(1);
}
public void textBox1Update(string message)
{
textBox1.Text = message;
}
}
}
我面临的问题是" button1_click" a设置为1,如果a = 1,则方法" ID0008Update10ms"无限奔跑。如果我尝试生成" button2_Click"我无法实现它,或者它根本不起作用,所以a永远不会设置为零。 为什么会出现此问题?
答案 0 :(得分:0)
如果button1_Click正在运行无限循环,它将阻止UI线程。
这意味着无法处理UI线程上的任何其他事件,包括button2_Click。
答案 1 :(得分:0)
尝试在后台线程上运行无限时,或者使用1ms的thread.sleep实现它。 问题可能是您阻止了无法处理按钮2上的第二次单击的UI线程