アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつも大変お世話になっています。
VC初心者です。

現在、ファイル書き込み処理で悩んでいます。
他のユーザがファイルをオープンしてたり、開こうとすると
落ちてしまいます。
たとえば、ファイルが開かれていることを検知して、
ユーザに「ファイルを閉じてください」とメッセージを出した後、
再度書き込み処理を実行できませんでしょうか。
(書き込み中は他のユーザからのアクセスを拒否させたいです。)


現在以下のようなソースを書いています。
//ファイルオープン
System::IO::StreamWriter^ sw
= gcnewSystem::IO::StreamWriter(
path_w,false,System::Text::Encoding::Default);

//ファイル書き込み
String^ newData = "aaa";
sw->WriteLine(newData);

//ファイルクローズ
sw->Close();

お手数ですが、よろしくお願いします。

A 回答 (2件)

> 落ちてしまいます。



「落ちる」のは適切な例外処理をしていないからでしょう。
今回の場合は,try - catchで例外を捕まえるのがよいかと。

MSDN: StreamWriter コンストラクタ (String, Boolean, Encoding) (System.IO)
http://msdn.microsoft.com/ja-jp/library/f5f5x7kt …
MSDN: Exception Handling under /clr
http://msdn.microsoft.com/ja-jp/library/633chdda …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

try、catchでうまくいきました。
ありがとうございました。

お礼日時:2009/06/19 09:35

例外処理はやることとして、



>たとえば、ファイルが開かれていることを検知して、
>ユーザに「ファイルを閉じてください」とメッセージを出した後、
>再度書き込み処理を実行できませんでしょうか。
>(書き込み中は他のユーザからのアクセスを拒否させたいです。

 同じファイルを2人の人が同時に編集してしまい、更新がかちあうことをconfilictといいます。
 私は使ったことがありませんが、複数人でのシステム開発プロジェクトにおけるこうしたconflictを避けるために、ファイルをロックする機能を持ったSubversion+プロジェクト管理システムTRACが用いられることがあります。

http://www.atmarkit.co.jp/fjava/rensai4/devtool0 …
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

conflictという言葉を初めて知りました。
こういう情報を教えて頂いて幸いです。

お礼日時:2009/06/20 23:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!