Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic

Войти
Регистрация
Восстановить пароль
 
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 178
#1

Mutex - создание и удаление - VB

02.01.2017, 15:13. Просмотров 200. Ответов 5
Метки нет (Все метки)

Всем привет.
Я создал mutex следующим образом :

объявление
Visual Basic
1
2
Public Declare Function CreateMutex Lib "kernel32"  Alias "CreateMutexA"(ByVal lpMutexAttributes As Integer, ByVal bInitialOwner As Integer, ByVal lpName As String) As Integer 
    Public mutexvalue As Integer
задание

Visual Basic
1
mutexvalue = CreateMutex(ByVal 0&, 1, "svershion")
подскажите, как этот mutex удалить ? заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2017, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Mutex - создание и удаление (VB):

Программное создание нескольких Label, их удаление - Visual Basic
Добрый день Уважаемые знатоки языка Visual Basic!!!!! Подскажите пожалуйста, как программно создавать несколько ЭУ Label... одну...

Удаление pthread mutex/rwlock в обработчике сигнала - C Linux
Необходимо удалить мьютекс в обработчике сигнала. Т.е. есть главный поток, выполняющий какую-то задачу в бесконечном цикле, есть несколько...

Как сделать закачку и удаление файлов, создание и удаление каталогов? - PHP
Как сделать закачку и удаление файлов, создание и удаление каталогов?

Создание программы со своей библиотекой ( удаление элементов с N по M в строке и удаление лишних пробелов(если 2 и более оставить один)) - C++
добрый день. помогите, пожалуйста понять мои ошибки в работе. Мне нужно написать программу со своей библиотекой, которая включает в себя...

Mutex - C#
Есть код, вида: public static Mutex mut = new Mutex(); public static void FirstMethod() { ...

mutex - C++
День добрый. Прошу объяснить мне дураку m_hShared = OpenMutex(MUTEX_ALL_ACCESS, TRUE, L"FileMutexEx"); if(m_hShared) ...

5
Catstail
Модератор
22991 / 11357 / 1850
Регистрация: 12.02.2012
Сообщений: 18,597
02.01.2017, 18:09 #2
CloseHandle
0
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 178
02.01.2017, 18:22  [ТС] #3
а разве не
Visual Basic
1
Public Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
?
0
Kogb
325 / 93 / 19
Регистрация: 17.07.2011
Сообщений: 201
Записей в блоге: 1
02.01.2017, 19:04 #4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'Code by Adam Verwijs
Const ERROR_ALREADY_EXISTS = 183&
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As Any, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
    Dim hMutex As Long
    'Try to create a new Mutex
    hMutex = CreateMutex(ByVal 0&, 1, App.Title)
    'Did the mutex already exist?
    If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
        'Clean up
        ReleaseMutex hMutex
        CloseHandle hMutex
        'More than one instance detected
        MsgBox "More than one instance"
        End
    Else
        'form load code
    End If
End Sub
0
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 178
02.01.2017, 19:05  [ТС] #5
Да, спасибо, я тоже нашел этот код )
0
Dragokas
Эксперт WindowsАвтор FAQ
16100 / 6919 / 834
Регистрация: 25.12.2011
Сообщений: 10,686
Записей в блоге: 16
09.01.2017, 02:16 #6
Цитата Сообщение от GIP Посмотреть сообщение
а разве не ... ReleaseMutex
Смотря для чего он Вам.

В коде Adam, приведённом Kogb, не нужен. Другой поток не сможет стать владельцем уже созданного именованного мютекса, используя функцию CreateMutex, соответственно и освобождать нечего. Только CloseHandle.

А в событии завершения приложения желателен (но не обязателен).
От него будет зависеть, какое значение вернёт waitable функция.
Если просто CloseHandle, то WAIT_ABANDONED.
Если ReleaseMutex, то сигнальное состояние, т.е. WAIT_OBJECT_0 ( + dwCount - 1).
3
09.01.2017, 02:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2017, 02:16
Привет! Вот еще темы с ответами:

Не удаляется Mutex - C++ WinAPI
создаю мутекс: hMutex = CreateMutex(NULL, TRUE, "1234"); есть бесконечный цикл в потоке: while (true) { // ... ...

qt named mutex ? - C++ Qt
Есть ли Qt именные мьютексы? То есть в winapi я могу открыть мьютекс по имени HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"IMA...

Работа с Mutex - Delphi WinAPI
Доброго дня суток! Решил блокировать доступ к файлу для разных потоков через Mutex, что то не идет( Оба потока реализованы подобным...

DataBase Mutex - Java
Нужно синхронизировать разные потоки в разных процессах. Есть несколько процессов(поднято несколько JVM) и они используют один ресурс. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.