2016-08-15 2 views
0

Может ли кто-нибудь сказать мне, что является эквивалентом этого кода vb в Delphi?Эквивалент VB.NET WaitOne() & Set() в Delphi

Нужно ли мне использовать:

ResetMyEvent: THandle; //?? 

Эти линии VB скопированные из небольшого консольного приложения. Никаких визуальных компонентов.

спасибо.

Module MyModule 
    Private WithEvents Obj As MyInterface 
    Private WaitForStartLibrary As AutoResetEvent = New AutoResetEvent(False) 

Sub Main() 
    Obj.StartLibrary(param1, param2,...) 

    If WaitForStartLibrary.WaitOne(5000) = False Then//How can I do this w/out timer comp ? 
    Throw New Exception("Operation timed out") 
    End If 
End Sub 

//Event 
Private Sub StartLibraryCallBack() Handles Obj.StartLibraryCallBack 
    WaitForStartLibrary.Set() 
End Sub 

ответ

5

Преимущества Delphi эквивалентно .net AutoResetEventTEvent это.

  • Когда вы create это передать False для ManualReset аргумента, который даст вам событие автоматического сброса.
  • Чтобы дождаться события, позвоните по телефону WaitFor.
  • Для того, чтобы установить мероприятие, позвоните по телефону SetEvent.
+0

спасибо. Код VB очень изящный, и я хотел бы достичь того же в Delphi, но не знаю, как это сделать. У меня нет нитей в моем приложении в данный момент. Посмотрел на ваш ответ, и я использую эти строки, но не уверен, как собрать все вместе, чтобы получить тот же результат, что и код VB: WaitForStartLibrary: = TEvent.Create (nil, false, false, ''); WaitForStartLibrary.WaitFor (5000); // App висит здесь! (Код в событии StartLibraryCallBack) WaitForStartLibrary.SetEvent; Я был бы признателен, если вы приведете пример. Спасибо. – Walid

Смежные вопросы