Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема 
:(
    Опции темы
JTV
Дата 6.5.2013, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 31.10.2011

Репутация: нет
Всего: нет



Здравствуйте! Очень нужна ваша помощь. Я написала программу, где я запуская несколько потоков, и просто наблюдаю процесс, как эти потоки меняют одну картинку на другую.
Все было бы очень хорошо, если бы не возникала ошибка(когда, как я понимаю несколько потоков сразу пытаются изменить ее) .
Как сделать так, чтобы только один поток обращался к PictureBox? Т. е. посредством каких функций или еще чего-нибудь я могу ограничить доступ к picturebox, чтобы получилось что-то вроде очереди? Ну, или просто, может, кто-нибудь знает решение этой проблемы....
пишу в visual studio 2010
Ссылка на возникающую ошибку http://s1.ipicture.ru/uploads/20130506/lJggTQek.jpg
Код

Imports System.Drawing
Imports System
Imports System.Threading

Public Class Form1
    Shared a(0 To 2) As Thread, ID As Integer

    Function m(ByVal i As Integer) As Double
        While 1 < 2
            Randomize()
            Thread.Sleep(Rnd(10000))
                Me.Pic.Image = System.Drawing.Bitmap.FromFile("C:\Users\ЮЛЯ\Documents\Visual Studio 2010\Projects\jttttttttt\jttttttttt\Resources\вилка с ложкой.png")
                Me.Pic.Image = System.Drawing.Bitmap.FromFile("C:\Users\ЮЛЯ\Documents\Visual Studio 2010\Projects\jttttttttt\jttttttttt\Resources\captain.png")
        End While
        Return 0
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For j = 0 To 2
            a(j).Start()
            'TextBox1.Text = TextBox1.Text + "\n" + Str(ID)
        Next

    End Sub

    Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For j = 0 To 2
            a(j) = New Thread(AddressOf m)
        Next
    End Sub
End Class



PM MAIL   Вверх
Akina
Дата 6.5.2013, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Используйте любое средство синхронизации потоков. 
Скажем, поток, намеренный работать с объектом, создаёт мьютекс с предопределённым именем... если удачно - то работает, а по окончании прибивает мьютекс, если неудачно - объект захвачен, и надо ждать своей очереди, периодически пытаясь снова создать мьют (получить право на работу).



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.