由于计时器

时间:2017-03-29 07:26:01

标签: c# timer listbox

我正在制作一个发送数据真USB的程序。在我的程序中,我正在制作一个列表视图,以显示该程序当前正在做什么。 因为我正在使用USB我有一个间隔为50的计时器,当我想将文本发送到列表视图时会出现问题,因为我的文本每秒发送50次而不是1次。

任何人都知道如何解决这个问题? 改变我的程序所以当文本已经写入列表框时,程序可能不会再发送它不是我认为的选项,因为同样的动作可能发生超过1次。

您可以在此找到相关代码。

    private void ClickMyRadioButton1()
    {
        if (radioOff1.Checked)
        {
            radioOff1.PerformClick();
            ListViewItem lvi = new ListViewItem("All USB's are off");
            listView1.Items.Add(lvi);
        }
    }

    private void tmrUSB_Tick(object sender, EventArgs e)
    {
        //Everything in here is repeated constantly
        USBObject.receiveViaUSB();
        listView1.EnsureVisible(listView1.Items.Count - 1);
        if ( tabPage1 == tabControl1.SelectedTab)
        {
            this.radioOff2.Checked = true;

            if (radioOff1.Checked == true)
            {
                USBObject.fromHostToDeviceBuffer[1] = USB_OFF;
                ClickMyRadioButton1(); //This is what I only want to send one time to my ListBox and not 50 times a second
            }
      }

我正在使用Visual C#2010。

由于

1 个答案:

答案 0 :(得分:0)

试试这个,让我知道它是否适合你:

    private void ClickMyRadioButton1()
    {
        if (radioOff1.Checked)
        {
            radioOff1.PerformClick();
            ListViewItem lvi = new ListViewItem("All USB's are off");
            listView1.Items.Add(lvi);
        }
    }

    int counter = 0;

    private void tmrUSB_Tick(object sender, EventArgs e)
    {
        if (counter != 50) 
        {
           counter++;
           return;
        }
        else
        { 
            counter = 0;
        }

        //Everything in here is repeated constantly
        USBObject.receiveViaUSB();
        listView1.EnsureVisible(listView1.Items.Count - 1);
        if ( tabPage1 == tabControl1.SelectedTab)
        {
            this.radioOff2.Checked = true;

            if (radioOff1.Checked == true)
            {
                USBObject.fromHostToDeviceBuffer[1] = USB_OFF;
                ClickMyRadioButton1(); //This is what I only want to send one tine to my ListBox
            }
      }