Как использовать семафор в Visual Basic

голоса
21

Я импортировал kernel32библиотеку. Итак, у меня есть createMutexфункция доступна , но я не совсем уверен , различных параметров и возвращаемых значений.

Это классический Visual Basic, не Визуальный Basic.NET, но я, вероятно, может работать с любым языком в форме ответа.

Задан 04/08/2008 в 02:22
источник пользователем
На других языках...                            


3 ответов

голоса
9

Вот заявление VB6 для CreateMutex - я просто скопировал их от зрителя API, который вы должны иметь , как часть установки VB6. VB6 Маршалловой строки в нуль-терминатор ANSI с использованием текущей кодовой страницы.

Public Type SECURITY_ATTRIBUTES
   nLength As Long
   lpSecurityDescriptor As Long
   bInheritHandle As Long 
End Type

Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, _
    ByVal lpName As String) As Long

Имейте в виду, что если вы создаете семафор из VB6 IDE, мьютекс принадлежит к IDE и не будет уничтожен, когда вы останавливаете выполнение вашей программы - только при закрытии IDE.

Ответил 17/09/2008 d 13:01
источник пользователем

голоса
7

Код VB выглядит примерно так:

hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)

Первый параметр представляет собой указатель на SECURITY_ATTRIBUTESструктуру. Если вы не знаете , что это такое, вам не нужно. Pass NULL (0).

Второй параметр TRUE(не равен нулю, или 1) , если вызывающий поток должен взять на себя ответственность мьютекса. FALSEв противном случае.

Третий параметр является именем взаимной блокировки и может быть (0) равен NULL, как показано на рисунке. Если вам нужен именованный мьютекс, передать имя (ничего уникального) в. Не уверен , является ли VBоберток маршалов длины префикса VBтипа строки ( BSTR) к нуль-терминатором ASCII / Unicode строку , если нет, то вам необходимо сделать и многочисленные примеры там.

Удачи!

Ответил 04/08/2008 d 05:58
источник пользователем

голоса
2

Ну, на основе документации , это выглядит следующим образом :

  1. Атрибуты безопасности (можно передать NULL)
  2. Является ли это изначально принадлежит (может передать ложь)
  3. Название этого

НТН

Ответил 04/08/2008 d 05:48
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more