C#新线程无法访问

时间:2013-09-18 15:07:54

标签: c# wpf multithreading

我有问题。我正在尝试在C#.NET(WPF)中为BASS创建搜索栏,但是当我开始一个新线程时,它无法访问修改我的Slider或Label的值(具有当前歌曲位置值)。这是一个代码:

//class:
Thread seekbar;
public Window1()
    {
        InitializeComponent();
        Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);

        seekbar = new Thread(new ThreadStart(this.ThreadTask));
        seekbar.IsBackground = true;
        seekbar.Start();
    }
private void ThreadTask()
    {
        int value = (int)Bass.BASS_ChannelGetPosition(music);
        while (true)
        {
            MusicSeekBar.Value = value; //MusicSeekBar is mine Slider
            CurrentValue.Content = value; //CurrentValue is a Label
        }
    }

我总是得到一个错误,线程无法访问这两个对象。感谢您的建议帮助。

1 个答案:

答案 0 :(得分:3)

您需要拨打MusicSeekBar& Dispatcher中的CurrentValue因为新线程无法访问它们。

        Dispatcher.BeginInvoke(new Action(() =>
        {
            MusicSeekBar.Value = value; //MusicSeekBar is mine Slider
            CurrentValue.Content = value; //CurrentValue is a Label
        }));