2分钟后图形用户界面冻结

FirstOption.

成员
加入
2014年4月23日
消息
10
编程经验
Beginner
所有人都美好的一天,
我需要支持如何解决这个问题。我开发了一个带有37个福彩12选5走势图栏的图形用户界面。福彩12选5走势图栏用于控制LED亮度。该应用程序非常好,除了2分钟后它挂起。所以我必须重新加载在它之前可以再次使用。下面的代码线是37个福彩12选5走势图栏中的两个。

C#:
private Timer _scrollingTimer = null;
private void trackBar1_Scroll(object sender, EventArgs e)
{
    if (_scrollingTimer == null)
    {
        // Will tick every 500ms (change as required)
        _scrollingTimer = new Timer() 
        {
                Enabled = false,
                Interval = 500,
                Tag = (sender as TrackBar).Value
        };
        _scrollingTimer.Tick += (s, ea) =>
        {
            // check to see if the value has changed since we last ticked
            if (trackBar1.Value == (int)_scrollingTimer.Tag)
            {
                // scrolling has stopped so we are good to go ahead and do stuff
                _scrollingTimer.Stop();
               myFtdiDevice.write(dataTowrite,dataTowrite.Length,ref  numByteswritten);
    int  percent =(int )(((double)trackbar1.Value/(double)reackbar1.Maximum) * 100);
    label2.Text = (percent.ToString()) + "%";
    data[0] = Convert.ToByte(percent);
    data[1] = 0x6A;
    myFtdiDevice.write(data,2,ref  numByteswritten);
             
                _scrollingTimer.Dispose();
                _scrollingTimer = null;
            }
            else
            {
                // record the last value seen
                _scrollingTimer.Tag = trackBar1.Value;
            }
        };
        _scrollingTimer.Start();
    }
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
    if (_scrollingTimer == null)
    {
        // Will tick every 500ms (change as required)
        _scrollingTimer = new Timer() 
        {
                Enabled = false,
                Interval = 500,
                Tag = (sender as TrackBar).Value
        };
        _scrollingTimer.Tick += (s, ea) =>
        {
            // check to see if the value has changed since we last ticked
            if (trackBar2.Value == (int)_scrollingTimer.Tag)
            {
                // scrolling has stopped so we are good to go ahead and do stuff
                _scrollingTimer.Stop();
               myFtdiDevice.write(dataTowrite,dataTowrite.Length,ref  numByteswritten);
    int  percent =(int )(((double)trackbar2.Value/(double)reackbar2.Maximum) * 100);
    label3.Text = (percent.ToString()) + "%";
    data[0] = Convert.ToByte(percent);
    data[1] = 0x6A;
    myFtdiDevice.write(data,2,ref  numByteswritten);
             
                _scrollingTimer.Dispose();
                _scrollingTimer = null;
            }
            else
            {
                // record the last value seen
                _scrollingTimer.Tag = trackBar2.Value;
            }
        };
        _scrollingTimer.Start();
    }
}
有没有办法我可以调整这些代码,以防止冻结。谢谢你们所有的支持。
Firstoption.
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,731
地点
悉尼,澳大利亚
编程经验
10+
在设计器中添加您的计时器,只需停止并在滚动事件处理程序中开始并启动它们,而不是每次滚动时都会创建新的定时器?此外,我没有看,但我认为福彩12选5走势图栏会有一个估值的事件等,并且它会更加有意义地处理。
 
最佳 底部