powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Поток зависает при попытке доступа к контролу
7 сообщений из 7, страница 1 из 1
Поток зависает при попытке доступа к контролу
    #36901897
Semyglass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня одного контролы не обновляются в потоке?

код:
Код: plaintext
1.
2.
3.
4.
5.
        void button3_Click(object sender, RoutedEventArgs e)
        {
            BackgroundWorker bw = new BackgroundWorker();
            bw.DoWork += Play;
            bw.RunWorkerAsync();
        }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        private void Play(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            while (currentTurn < 10)
            {
                if ((worker.CancellationPending == true))
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    currentTurn++;
                    SelectedInfo.Text = currentTurn.ToString();//в этом месте виснет
                    System.Threading.Thread.Sleep(1000);
                }
            }
        }
SelectedInfo - это TextBlock.
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36901909
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semyglass,

если так делать ,то да - только у тебя.
подпишись на событие progresschanges вроде, и туда помести код обновления контрола.
а то тут cross thread excpetion словишь.
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36901943
Semyglass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал:
Код: plaintext
1.
2.
3.
        void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            SelectedInfo.Text = currentTurn.ToString();
        }
все-равно зависает.

кроме того, мне надо именно в потоке обновлять, неужели никаких альтернатив нету?
кстати, MessageBox.Show тоже подвешивает.
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36902030
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semyglass,

а че ты жмешь код то? покажи весь. походу у тебя там есть ньансы.
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36902044
Semyglass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никаких нюансов нету. я убрал только закомментированное. вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
        void button3_Click(object sender, RoutedEventArgs e)
        {
            BackgroundWorker bw = new BackgroundWorker();
            bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
            bw.DoWork += Play;
            bw.RunWorkerAsync();
        }

        void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            SelectedInfo.Text = e.ProgressPercentage.ToString();
        }

        private void Play(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            while (true)
            {
                if ((worker.CancellationPending == true))
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    currentTurn++;
                    MoveFovard = true;
                    worker.ReportProgress(currentTurn);
                    //ParseTurn(turns[currentTurn]);
                    //DrawSlider(currentTurn);
                    System.Threading.Thread.Sleep(1000);
                }

            }
            bPlay = false;
        }
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36902095
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semyglass,

Set the WorkerReportsProgress property to true if you want the BackgroundWorker to support progress updates
...
Рейтинг: 0 / 0
Поток зависает при попытке доступа к контролу
    #36902171
Semyglass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Поток зависает при попытке доступа к контролу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]