- - PR -
【C#】Winアプリの複数起動時の処理について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-24 19:56
C#.NETでWinアプリを作成しています。
同アプリを別プロセスで複数起動した場合、1つめのアプリの処理中は2つめ以降のアプリは処理を待機し、1つめのアプリの処理が終了した後、2つめのアプリの処理が始まるといった動きをさせたいと考えています。 mutexクラスを使うことで、このような動きにはなったのですが、 1つめのアプリが処理中に、2つ目以降のアプリのウインドウが全く触れなくて困ってます。 1つめのアプリが処理中に、2つ目以降のアプリを最少化したり、場所を移動するような処理をしたいと考えています。 解決策ありましたらご教授ください。 よろしくお願いします。 | ||||
|
投稿日時: 2008-04-24 20:25
mutexの解放まちでブロックしているからでしょう。
タイマーで定期的にチェックし、解放まちではブロックしないようにします。すると、フォーム上のコントロールがさわれてしまいますが、formのenabledをfalseにしてしまえばいいでしょう。 | ||||
|
投稿日時: 2008-04-25 18:29
返答ありがとうございます。。
現状は、以下のようにしています。 if (hMutex.WaitOne(-1, false)) { //処理 hMutex.ReleaseMutex();//解放 } 解放まちではブロックしないようにとは、 具体的にどのようにすれば良いのでしょうか? | ||||
|
投稿日時: 2008-04-25 23:28
まずは、ご自分が書かれたコードが何を意味しているのかを理解して下さい。
http://msdn2.microsoft.com/ja-jp/library/kzy257t0.aspx ここで「ブロックする」とは状態が変わるまでずっとコードが動かない状態を指しています。 先のメソッドの引数に適切な値を指定し、タイマーコントロールか何かで定期的にチェックするようにすれば良いでしょう。 ※ループで待ってはいけません。ループで待つことはブロックすることと同じです。 | ||||
|
投稿日時: 2008-04-28 18:16
タイマーコントロールで出来るようになりました。。
ご回答ありがとうございました。。 |
1