我有问题。我正在尝试在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
}
}
我总是得到一个错误,线程无法访问这两个对象。感谢您的建议帮助。
答案 0 :(得分:3)
您需要拨打MusicSeekBar& Dispatcher中的CurrentValue因为新线程无法访问它们。
Dispatcher.BeginInvoke(new Action(() =>
{
MusicSeekBar.Value = value; //MusicSeekBar is mine Slider
CurrentValue.Content = value; //CurrentValue is a Label
}));