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

Visual Basic

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

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

02.01.2017, 15:13. Просмотров 153. Ответов 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 удалить ? заранее спасибо
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
Модератор
22148 / 10622 / 1729
Регистрация: 12.02.2012
Сообщений: 17,667
02.01.2017, 18:09     Mutex - создание и удаление #2
CloseHandle
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 131
02.01.2017, 18:22  [ТС]     Mutex - создание и удаление #3
а разве не
Visual Basic
1
Public Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
?
Kogb
316 / 84 / 18
Регистрация: 17.07.2011
Сообщений: 180
Записей в блоге: 1
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
Сообщений: 131
02.01.2017, 19:05  [ТС]     Mutex - создание и удаление #5
Да, спасибо, я тоже нашел этот код )
Dragokas
Эксперт WindowsАвтор FAQ
14900 / 6503 / 792
Регистрация: 25.12.2011
Сообщений: 10,042
Записей в блоге: 15
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 - создание и удаление
Ответ Создать тему
Опции темы

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