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

Visual Basic

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

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

02.01.2017, 15:13. Просмотров 164. Ответов 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 - создание и удаление
Посмотрите здесь:

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

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

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

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

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

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

Работа с mutex - C#
Господа, есть такая проблема. Нужно реализовать многопоточность при помощи mutex. Должны быть 3 параллельных потока, в каждом потоке идет...

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

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

Многопоточность и Mutex - C++ Qt
Мне помогли написать код который ищет максимум многопоточно, и посоветовали сделать поиск максимума главным потоком через Mutex, я...

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

Создать Mutex - C++ Builder
Здравствуйте! Ребята подскажите. Хочу сделать блокировку на запуск повторного запуска своей программы для этих целей в главном...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
22456 / 10861 / 1769
Регистрация: 12.02.2012
Сообщений: 17,976
02.01.2017, 18:09     Mutex - создание и удаление #2
CloseHandle
GIP
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 136
02.01.2017, 18:22  [ТС]     Mutex - создание и удаление #3
а разве не
Visual Basic
1
Public Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
?
Kogb
320 / 88 / 19
Регистрация: 17.07.2011
Сообщений: 187
Записей в блоге: 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
Сообщений: 136
02.01.2017, 19:05  [ТС]     Mutex - создание и удаление #5
Да, спасибо, я тоже нашел этот код )
Dragokas
Эксперт WindowsАвтор FAQ
15748 / 6596 / 793
Регистрация: 25.12.2011
Сообщений: 10,185
Записей в блоге: 16
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 - создание и удаление
Ответ Создать тему
Опции темы

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