![]() |
Как работать с мьютексами в VB .Net?
Долго парился ... не могу найти проблему ....
Суть задачи проста, а именно нужно написать процедуру, которая проверяла бы запущено ли приложение. В VFP эту проблему решал и решил успешно через мьютексы. Теперь возникла та же проблема в Басике .Нет написал следующее: Код:
Public Sub Start_Alone()т.е. я запускаю прогу с месаджем и она ждет нажатия копки ок (мессадж вызывается после создания мьютекса) ... потом запускаю второй экземпляр проги и она создает новый мьютекс, потому что не видит первого GetLastError показывает код 2 типа File_not_found ... В чем проблема? И есть ли альтернативные способы решения задачи в Басике .Нет? Решение проблемы :) :)) оказалось проблема была в другом месте ... описание функции CreateMutex было взято следующее Цитата:
надо было сделать так Цитата:
Код:
Public Sub Start_Alone() |
наколка....
есть фукция така GC.KeepAlive |
iam_xor
поясни, плиз |
SwiMMeR, глянь здесь: http://www.gotdotnet.ru/DotNet/FAQ/C...terop/457.aspx
Тока там на C# но перевести на VB 2 секунды. |
Вот е мое ! Через mutex проверять запущенное приложение ! В жизни бы не додумался ! Че - нет способов попроще ? :)
|
во первых: куда уж проще
а во вторых этот -- наиболее надежный ( и быстрый ) |
Код:
Module MainModuleвот собсно и усё |
Честное слово - до сих пор думал что mutex'сы созданы для того чтоб решать проблемы многопоточных программ (кто и когда, в какую очередь и т.д)
А проблемы нахождения запушенных программ до сих пор решал через API функции (даже если надо было найти собственную программу я бы все равно забурился бы в API чем полез в mutex) Сорри - видел в работе API - впечетлился, использую :yees: |
а чем проблема запуска второго процесса отличается от проблемы запуска второго потока? ( ответ -- ничем :) )
а CreateMutex() это что не API? |
ОК - сорри насчет API (че то я погорячился :) ) Я имел в виду API функции как .FindWindow или .FindProcess (или как там это называется)
А насчет процессов - не понял :( Ты спрашиваешь зачем нужны mutex'ы в ситуации когда оба поцесса/потока пытаются обратится к одному и тому же адресу в памяти ? Или КАК создается новый процесс/поток ? |
нет. я говорю что определение запущенности второго экземпляра приложения это та же проблема синхронизации и ее логичнее решать с помощью семафора
|
Ок - поясню себя:
То что ты имешь в виду: Некто Василий (процесс) встает бухой в ж*** с бодуна и не помнит как это зовут и главное если есть в комнате кто то еще с таким именем. Для этого у него есть паспорт (семафор) который он начинает разглядывать у всех находящихся в комнате пока не найдет свой собственный у себя же в кармане и тогда он узнает что он тот самый - The One. Я же советую обратится к жене (API .FindProcess) чтобы она сказала если есть еще кто то с таким именем в комнате. То что я имею в виду: Некто Василий и его товаришь Федор хотят погладить (изменить на подходящие слово) девушку. Для этого каждый из них держит светофор. И только девушка будет решать кто из них и в какую очередь будет ее гладить (наверное на основание цвета на светофоре) Вот так то ! :beer: |
| Часовой пояс GMT +4, время: 01:06. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.