Jak używać mutex w języku Visual Basic

głosy
21

Mam importowane z kernel32biblioteki. Tak, mam createMutexfunkcja dostępna, ale nie jestem pewien, o różnych parametrach i wartości zwracanych.

Jest to klasyczny Visual Basic, a nie wizualne Basic.NET ale chyba mogę pracować z każdym z tych języków w formie odpowiedzi.

Utwórz 04/08/2008 o 02:22
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
9

Oto deklaracje VB6 dla CreateMutex - po prostu skopiowane je od widza API, które powinny masz jako część instalacji VB6. VB6 Marshalls struny do null zakończone ANSI przy użyciu bieżącej strony kodowej.

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

Należy pamiętać, że jeśli utworzyć mutex z IDE VB6, mutex należący do IDE i nie zostaną zniszczone, gdy przestanie działać program - tylko po zamknięciu IDE.

Odpowiedział 17/09/2008 o 13:01
źródło użytkownik

głosy
7

Kod VB wygląda mniej więcej tak:

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

Pierwszym parametrem jest wskaźnik do SECURITY_ATTRIBUTESstruktury. Jeśli nie wiesz co to jest, nie trzeba go. Przechodzą puste (0).

Drugim parametrem jest TRUE(nie zero lub 1), jeśli gwint wywołujący powinien własności muteksu. FALSEInaczej.

Trzecim parametrem jest nazwą Muteks i mogą być puste (0), tak jak pokazano. Jeśli potrzebujesz nazwany mutex, przekazać nazwę (wszystko) w wyjątkowy. Nie pewności, czy VBmarszałków otoki długość-prefiksem VBtypu string ( BSTR) nad do ASCII / ciąg Unicode nul jeśli nie, trzeba to zrobić oraz liczne przykłady są tam.

Powodzenia!

Odpowiedział 04/08/2008 o 05:58
źródło użytkownik

głosy
2

Cóż, na podstawie dokumentacji, wygląda następująco:

  1. atrybuty bezpieczeństwa (można przekazać NULL)
  2. Czy to początkowo własność (można przechodzić false)
  3. Nazwa niego

HTH

Odpowiedział 04/08/2008 o 05:48
źródło użytkownik

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