- PR -

アプリケーションの2重起動防止

1
投稿者投稿内容
おか
常連さん
会議室デビュー日: 2003/01/31
投稿数: 25
投稿日時: 2003-02-10 10:03
アプリケーションの2重起動防止はみなさんは
GetProcessesByNameを使われていると思いますが
Mutexを使ったことはありますか?
もしいらっしゃいましたらぜひ使い方(ロジックの記述方法等)を
教えていただけないでしょうかヘルプを参照したのですが
いまいち使い方がわらないもので・・・
よろしくお願いします。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-10 15:47
>>Mutexを使ったことはありますか?

Dim MutexObject As System.Threading.Mutex = New Mutex(True, MutexName, MutexOwner)

MutexName As String … Mutexの名前
MutexOwner As Boolean … オーナーになれたか

 すでに作成済みの場合、MutexOwnerがFalseになります。
おか
常連さん
会議室デビュー日: 2003/01/31
投稿数: 25
投稿日時: 2003-02-10 16:19
Jittaさん、ありがとうございます。
さっそく試してみます。
おか
常連さん
会議室デビュー日: 2003/01/31
投稿数: 25
投稿日時: 2003-02-10 21:32
ローカルだと教えていただいたとおりにすればうまくいくのですが
ネットワーク上の共有フォルダからEXEを実行すると
「system.ArgumentExceptionエラー」が発生してしまいます。
なにが原因かわからないのでどなたか教えていただけないでしょうか
ちなみにMutexの名前をNothingするとエラーはでませんが
2重起動されます。(あたりまえか・・・)
よろしくお願いします。
おか
常連さん
会議室デビュー日: 2003/01/31
投稿数: 25
投稿日時: 2003-02-12 18:50
自己レスです。
共有フォルダの指定をきっちりとすれば解決しました。
MyDocument\testフォルダに作っていたのですが
MyDocumentには共有で読み書き許可をしていましたがtestフォルダには
何も設定していませんでした。これを読み書き許可にすると解決しました。

お騒がせしすいませんでした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-02-13 08:27
>>ネットワーク上の共有フォルダからEXEを実行すると

 ネットワーク上の共有フォルダだと、VS.NETのプロジェクトを開くと警告がでますが、いろいろ制約がありますよ。

・セキュリティーポリシーの設定をしなければ、ローカルのリソースにほとんどアクセスできない
・FullTrustにしなければ、他のプロセスを起動できない (1)
・FullTrustにしなければ、Crystal Reportを使えない (2)

今わかっているのはこれくらい。

(1)…設定があるのかもしれないが、日本語ヘルプからはわからなかった
(2)…開発元より「ネットワーク共有フォルダからは使用はできない」との返答
おか
常連さん
会議室デビュー日: 2003/01/31
投稿数: 25
投稿日時: 2003-02-13 10:08
そうですね、VB6時代はなにも設定することなく実行できていましたね。
最初はアプリケーションの作り方に問題があるのかと思いました。
この会議室で「セキュリティ」で検索すると同じようなことが投稿されていました。
参考にさせていただきました。
FrameWork Wizardでイントラネットを完全信頼に設定すればいけました。
あとコマンドもあるようです。
「ヘルプ」はわかりにくいです・・・。

今後ともよろしくおねがいします。
1

スキルアップ/キャリアアップ(JOB@IT)