0

我有个问题。我正在尝试在 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
        }
    }

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

4

1 回答 1

3

您需要在 Dispatcher 中调用 MusicSeekBar 和 CurrentValue,因为新线程无权访问它们。

        Dispatcher.BeginInvoke(new Action(() =>
        {
            MusicSeekBar.Value = value; //MusicSeekBar is mine Slider
            CurrentValue.Content = value; //CurrentValue is a Label
        }));
于 2013-09-18T15:09:48.837 回答