0

私は問題があります。C#.NET (WPF) で BASS のシークバーを作成しようとしていますが、新しいスレッドを開始するときに、スライダーまたはラベルの値を (現在の曲の位置の値で) 変更するためのアクセスを取得できません。コードは次のとおりです。

//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
        }
    }

スレッドがこの 2 つのオブジェクトにアクセスできないというエラーが常に発生します。アドバイスありがとうございます。

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 に答える