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

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

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

Re[2]: 書き込み時のリトライ


(過去ログ 12 を表示中)

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

■3495 / inTopicNo.1)  書き込み時のリトライ
  
□投稿者/ asuka (16回)-(2007/05/11(Fri) 14:37:32)

分類:[C# (Windows)] 

お世話になっております。


C#にて共通フォルダのファイル書込みを行っております。
書込みが失敗した場合に、設定ファイルで設定された回数だけリトライをしたいのですが、
StreamWriterのWriteメンバまたは、WriteLineメンバの戻り値がvoidとなっており、
書込みが成功したかどうかが分からなくて困っております。

try{
 書込み処理
}
catch( Exception ex ){
 ここでリトライ
}

ネットワークを意識的に切断しますと、書込み時に例外がおこりcatchされます。
catchされたところでリトライしたいと考えております。

書込み用のメンバ関数がboolを返してくれるならば、

catch{
int nCnt = 1;
while( nCnt < nRetryCnt ){
if( bool型書込み関数 )
break;
}
return;
}

などとしたいのですが、何か良い手はないでしょうか?




最悪C++のAPI WriteFile()を使うしかないのかな?
と思っております。
引用返信 編集キー/
■3496 / inTopicNo.2)  Re[1]: 書き込み時のリトライ
□投稿者/ ぽぴ王子 (196回)-(2007/05/11(Fri) 15:22:44)
ぽぴ王子 さんの Web サイト
No3495 (asuka さん) に返信

> int nCnt = 1;
> while( nCnt < nRetryCnt ){
>  try{
>   bool型書込み関数
>   break;
>  }
>  catch( Exception ex ){
>   /* リトライするので無視 */
>  }
> }
> return;

こんな感じのコードで。


> ネットワークを意識的に切断しますと、書込み時に例外がおこりcatchされます。
> catchされたところでリトライしたいと考えております。

ネットワークが回復しても共有フォルダは回復しないような気がします(うろ覚え)。

引用返信 編集キー/
■3497 / inTopicNo.3)  Re[1]: 書き込み時のリトライ
□投稿者/ 中博俊 (1064回)-(2007/05/11(Fri) 15:23:51)
中博俊 さんの Web サイト
正直なにがわからないのかがわからない。

bool 書き込み処理(Parameters)
{
try{kakikomi}
catch{return false;}
return true;
}

実際にはファイルクローズなりいろいろ処理があるけど、こういう事でしょ?
リトライは呼び出し側でやってください。
引用返信 編集キー/
■3500 / inTopicNo.4)  Re[2]: 書き込み時のリトライ
□投稿者/ asuka (17回)-(2007/05/11(Fri) 16:24:32)
ぽぴ王子さん。

> ネットワークが回復しても共有フォルダは回復しないような気がします

回復した時点でログインしにいくので、こちらは問題ありませんでした。



中博俊さん

すいません、おっしゃるとおりでした。

関数化して対応いたしました。

ありがとうございます。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -