回 帖 发 新 帖 刷新版面

主题:请问怎么跳出一个需要的死循环??

我有一个新问题要请教大家 请大家多多帮帮忙 讨论以下

我现在用C#写一个虚拟函数发生器的程序,具体的功能是通过软件采样编码将值通过并口送到D/A

这样就要要输出连续的波形

于是
在按下一个button以后,有一段代码是死循环在往外送数据,怎么样才能够通过按键跳出这个死循环呢? 

我刚刚学C#,编程的经验也不多 还请大家多多指教!



回复列表 (共2个回复)

沙发

//您好,照我说的试试~
//建立一个窗体C#中的,然后放两个Button按钮,画的稍大一点。放一个label.
//注意Button和label控件的属性都用默认的,button1,button2,label1
//进入代码段将原有的代码删除,把下面我给出的代码粘贴上,运行~

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

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        bool isBool = true  ;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {  
            isBool = !isBool;
 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "点击进行停止";
            button2.Text = "开始死循环";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            double TempNum = 0;
            isBool = true;
            while (isBool) {
                label1.Text =Convert .ToString ( TempNum++);
                System.Windows.Forms.Application.DoEvents();
                button1.Focus();
            }
        }
    }
}
//VS2005.NET

板凳

[quote]//您好,照我说的试试~
//建立一个窗体C#中的,然后放两个Button按钮,画的稍大一点。放一个label.
//注意Button和label控件的属性都用默认的,button1,button2,label1
//进入代码段将原有的代码删除,把下面我给出的代码粘贴上,运行~

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

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        bool isBool = true  ;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {  
            isBool = !isBool;
 
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "点击进行停止";
            button2.Text = "开始死循环";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            double TempNum = 0;
            isBool = true;
            while (isBool) {
                label1.Text =Convert .ToString ( TempNum++);
                System.Windows.Forms.Application.DoEvents();
                button1.Focus();
            }
        }
    }
}
//VS2005.NET[/quote]


谢谢你
我原来也是这样试过的,只是在死循环 中没有  System.Windows.Forms.Application.DoEvents();
这句代码
请问一下 这句代码具体起了什么作用呢?
因为我的死循环中 是不断的输出数据  对于时间的及时性要求很高
所以想具体的请教一下 这段代码的作用 以及它的时间复杂度
衷心谢谢你

我来回复

您尚未登录,请登录后再回复。点此登录或注册