C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: Mainメソッドに戻らず終了させたい


(過去ログ 78 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■46197 / inTopicNo.1)  Mainメソッドに戻らず終了させたい
  
□投稿者/ ROSE (4回)-(2010/01/27(Wed) 22:32:22)

分類:[.NET 全般] 

以下の様なメソッドがあります。

public static int Sub(Mutex mut)
{
mut.ReleaseMutex();
    return -1;
}

これは、例外処理の時に行うMutexの解放と-1を返す処理を共通化しています。
そして、Mainメソッド内で Sub(mut); と書いて呼び出しています。

この処理自体はうまくいくのですが、この処理をreturnで抜けたあとにメインメソッドが続行されるため、一つ問題が起こっています。
メインメソッドの最後に、

mut.ReleaseMutex();
return 0;

という感じで正常に処理が行われた場合の後始末を記述しているので、Subメソッドを抜けた後でもう一度Mutex解放を行おうとしてしまいます。
するとエラーが出てしまいます。
それを回避してもreturnで0が返ってしまいます。

どうにかしてSubメソッドの処理が終わった時点でプロセスを終了できないでしょうか?

共通化せずにそれぞれの場所で解放処理とreturnを書けば一応動くのですが、見た目が悪いため質問させて頂きました。
引用返信 編集キー/
■46198 / inTopicNo.2)  Re[1]: Mainメソッドに戻らず終了させたい
□投稿者/ 囚人 (463回)-(2010/01/27(Wed) 23:27:38)
状況がいまいちつかめていないのですが、なぜ Main の最後に
mut.ReleaseMutex();
return 0;
を書く必要があるのですか?
引用返信 編集キー/
■46208 / inTopicNo.3)  Re[2]: Mainメソッドに戻らず終了させたい
□投稿者/ みきぬ (749回)-(2010/01/28(Thu) 10:23:42)
同じく状況はよくわからないけど…

> 共通化せずにそれぞれの場所で解放処理とreturnを書けば一応動くのですが、見た目が悪いため質問させて頂きました。

私の目には、現状の処理も「それぞれの場所で解放処理とreturnを書いている」ように見える。
引用返信 編集キー/
■46209 / inTopicNo.4)  Re[1]: Mainメソッドに戻らず終了させたい
□投稿者/ こくぶん (40回)-(2010/01/28(Thu) 11:20:32)
No46197 (ROSE さん) に返信
> これは、例外処理の時に行うMutexの解放と-1を返す処理を共通化しています。
> そして、Mainメソッド内で Sub(mut); と書いて呼び出しています。

もし、 Sub(Mutex) の返却値がアプリケーション終了値としての -1 のみを表すのであれば、
Main メソッドの中で

return Sub(mut);

と書けばいいのではないでしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -