Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Многопоточность? / 6 сообщений из 6, страница 1 из 1
18.12.2008, 11:37
    #35721836
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
Добрый день! Проблемма в том, что при событии таймера формы, до зовершения выполнения ничего не происходит, т. к. единственный процесс занят... Этого можно избежать? И как если да...
...
Рейтинг: 0 / 0
18.12.2008, 12:28
    #35722007
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
> Автор: Grayscale
> Добрый день! Проблемма в том, что при событии таймера формы, до зовершения выполнения ничего не происходит, т. к.
> единственный процесс занят... Этого можно избежать? И как если да...


А для чего ты хочешь его освободить с помощью DoEvents?

--
С уважением Горбонос Игорь Леонидович

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2008, 16:45
    #35722882
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
У меня на форме есть контролы, при этом по mouseMove происходит тоже разная беда, а событие таймера, предназначенное для запуска процесса единожды после отрисовки формы (load не годится) длится около минуты.
Форма - статус бар для нагруженного процесса. А вот прервать процесс неполучается т. к. интервалы когда управление возвращается к форме слижком редки... Только и годяться чтоб квадратик намалевать...
...
Рейтинг: 0 / 0
18.12.2008, 16:47
    #35722890
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
Он не упоминал DoEvents. Он хотел решить проблемму ммногопоточности.

Grayscale, посммотри решение проблеммы ммногопоточности здесь:

http://www.tek-tips.com/viewthread.cfm?qid=519374
...
Рейтинг: 0 / 0
18.12.2008, 17:31
    #35723038
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
> Автор: Grayscale
> У меня на форме есть контролы, при этом по mouseMove происходит тоже разная беда, а событие таймера,
> предназначенное для запуска процесса единожды после отрисовки формы (load не годится) длится около минуты.
> Форма - статус бар для нагруженного процесса. А вот прервать процесс неполучается т. к. интервалы когда
> управление возвращается к форме слижком редки... Только и годяться чтоб квадратик намалевать...

Ну так и что мешает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Command1_Click()
Dim i As Long, j As Long
With Me.ProgressBar1
    .Min =  1 
    .Max =  10000 
    .Value = .Min
End With
For i =  1  To  1000000 
    For j =  1  To  10 
        Debug.Print j + i - i *  1 
    Next j
    If (Not i Mod  100 ) = True Then
        With Me.ProgressBar1
            .Value = .Value +  1 
            .Refresh
        End With
        DoEvents
    End If
Next i
End Sub


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.12.2008, 18:38
    #35723213
Grayscale
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточность?
Спасибо))) Многопоточность похоже то...
Doevents не подойдет потому что перепихивать класс в форму не годится...
Код: 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.
37.
38.
39.
40.
41.
42.
Option Explicit
Private WithEvents rpt As LclsReport
Private cancelClicked As Boolean

Private Sub Form_Load()
    Me.Timer.Interval =  1000 
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Me.Visible Then
        Me.Hide
        Cancel = True
    End If
End Sub

Private Sub rpt_stepInfo(cam As Long, tpe As String, step As Long)
Dim s As String
    Select Case cam
        Case  0 
            s = "сводный раздел"
        Case  1 
            If UCase(tpe) = "F" Then
                s = "камера 1 фронтальные стелажи"
            Else
                s = "камера 1 набивные стелажи"
            End If
        Case  2 ,  3 ,  4 ,  5 
            s = "камера " & cam
    End Select
    Me.Refresh
    Me.lblText.caption = "Обрабатывается " & s
    Me.prbMain.Value = Me.prbMain.Value +  5 
End Sub

Private Sub Timer_Timer()
    Me.Timer.Interval =  0 
    Set rpt = New LclsReport
    rpt.create
    Set rpt = Nothing
    Me.Hide
    Unload Me
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Многопоточность? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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