Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 108
02.01.2017, 15:13     Mutex - создание и удаление #1
Всем привет.
Я создал 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 удалить ? заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2017, 15:13     Mutex - создание и удаление
Посмотрите здесь:

Visual Basic Программное создание нескольких Label, их удаление
удаление слов Visual Basic
Visual Basic Удаление строчек
Удаление комментариев из кода Visual Basic
Visual Basic Удаление символа из строки
Visual Basic Удаление строк из файла
Удаление из базы данных? Visual Basic
Visual Basic Удаление строк из файла
Поиск и удаление файлов Visual Basic
Visual Basic Массовое удаление таблиц из БД
Удаление данных из БД Visual Basic
Visual Basic Удаление байтов из файла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21677 / 10401 / 1688
Регистрация: 12.02.2012
Сообщений: 17,338
02.01.2017, 18:09     Mutex - создание и удаление #2
CloseHandle
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 108
02.01.2017, 18:22  [ТС]     Mutex - создание и удаление #3
а разве не
Visual Basic
1
Public Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
?
Kogb
 Аватар для Kogb
312 / 80 / 17
Регистрация: 17.07.2011
Сообщений: 172
02.01.2017, 19:04     Mutex - создание и удаление #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
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 108
02.01.2017, 19:05  [ТС]     Mutex - создание и удаление #5
Да, спасибо, я тоже нашел этот код )
Dragokas
Автор FAQ
 Аватар для Dragokas
14826 / 6429 / 787
Регистрация: 25.12.2011
Сообщений: 9,969
Записей в блоге: 14
09.01.2017, 02:16     Mutex - создание и удаление #6
Цитата Сообщение от GIP Посмотреть сообщение
а разве не ... ReleaseMutex
Смотря для чего он Вам.

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

А в событии завершения приложения желателен (но не обязателен).
От него будет зависеть, какое значение вернёт waitable функция.
Если просто CloseHandle, то WAIT_ABANDONED.
Если ReleaseMutex, то сигнальное состояние, т.е. WAIT_OBJECT_0 ( + dwCount - 1).
Yandex
Объявления
09.01.2017, 02:16     Mutex - создание и удаление
Ответ Создать тему
Опции темы

Текущее время: 12:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru