【问题标题】:Object reference not set to an instance Of Object对象引用未设置为 Object 的实例
【发布时间】:2014-05-16 08:10:28
【问题描述】:

祝大家今天好, 请我需要有人帮我看看我的代码。我遇到了**对象引用未设置为对象实例**的错误。看来错误在这行代码中

if (_scrollingTimer == null) { _scrollingTimer = new Timer() { Enabled = false, Interval = 500, Tag = (sender as TrackBar).Value };

但不幸的是,我无法解决此错误。如果有人可以帮助我,我将非常高兴。感谢您的一贯支持。最好的问候。 第一选择。 下面是剩下的部分代码。

 byte[] data = new byte[5];
 private Timer _scrollingTimer = null;

  private void button3_Click(object sender, EventArgs e)
        {

            UInt32 numBytesWritten = 0;
            data[0] = 1;
            myFtdiDevice.Write(data, 1, ref numBytesWritten);
            data[0] = 0x6A;
            myFtdiDevice.Write(data, 1, ref numBytesWritten);


        }



  private void trackBar1_Scroll(object sender, EventArgs e)
        {

           if(!backgroundWorker1.IsBusy)
           {

               backgroundWorker1.RunWorkerAsync();
           }

        }

     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            UInt32 numBytesWritten = 1;
            string dataToWrite = "#0";

            if (_scrollingTimer  == null)
            {
                _scrollingTimer = new Timer()
                {
                    Enabled = false,
                    Interval = 500,
                    Tag = (sender as TrackBar).Value
                };
                _scrollingTimer.Tick += (s, ea) =>
                {
                    if (trackBar1.Value == (int)_scrollingTimer.Tag)
                    {
                        _scrollingTimer.Stop();
                        myFtdiDevice.Write(dataToWrite, dataToWrite.Length, ref numBytesWritten);
                        int percent = (int)(((double)trackBar1.Value / (double)trackBar1.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
                    {
                        _scrollingTimer.Tag = trackBar1.Value;
                    }
                };
                _scrollingTimer.Start();
            }
        }

【问题讨论】:

标签: c#-5.0


【解决方案1】:

sender 不是 TrackBar。看起来应该是backgroundWorker1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多