質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

4回答

1635閲覧

C# image.saveメソッドについて

masakey

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2022/01/06 08:07

前提・実現したいこと

プログラムA :画像を指定フォルダに「A.jpg」という名前で保存
プログラムB :指定フォルダを一定周期で監視し、「A.jpg」が見つかったら取得する

上記のような2つのプログラムを作成しようとしているのですが、プログラムBで一定周期で監視している際に、プログラムAで生成途中の画像を取得してしまう場合はあるのでしょうか。

また、そのようなケースがあり得る場合は、「B.jpg」という名前で保存し、生成が完了した時点で「A.jpg」にリネームすればよいと思うのですが、画像生成が最後まで終了したかどうかはどのように取得すればよいのでしょうか。

つたない日本語で申し訳ありません。よろしくお願いします。

該当のソースコード

C#

1resultImage.Save(fullname, jpgEncoder, myEncoderParameters);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/01/06 09:58 編集

このコメントは回答欄に移しました
退会済みユーザー

退会済みユーザー

2022/01/07 02:21

質問者さん、無言ですが、回答が付いていますのでそれらに対するフィードバックを返してください。役に立った/立たなかったぐらいならすぐ返事できるのでは? 役に立たなかったならどこがダメだったかを書くと、より期待するものに近い回答が出てくるかも。とにかく無言は NG です。
guest

回答4

0

ベストアンサー

.NET のソースコードを見てみましょう。

「Image.Save(string, ImageCodecInfo, EncoderParameters)」
https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Image.cs,5cd5db8a35628dd9

File.OpenWrite(filename) で書き込みしています。
では、File.OpenWrite のほうはどうかというと(OpenWrite をクリックするとジャンプします。)

「File.OpenWrite(String) 」
https://referencesource.microsoft.com/#mscorlib/system/io/file.cs,a30071aa09897b66

FileShare.None で開いているので、プログラムB が捕捉して開こうとしてもエラーになります。

リネームの件については、プログラムA が保存し、リネームするので問題ないのでは?

投稿2022/01/06 09:44

編集2022/01/07 03:01
KOZ6.0

総合スコア2707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masakey

2022/01/07 03:58

ありがとうございます。正しく理解することができました。
guest

0

プログラムAで生成途中の画像を取得してしまう場合はあるのでしょうか。

どのようなプログラムを作ったのですか? それが分からないと答えようがないですが、普通に考えると(質問者さんが途中で一時的に保存するような普通でないプロクラムを作ったとかがなければ)そういうことは無いと思いますけど。

投稿2022/01/06 09:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラムB :指定フォルダを一定周期で監視し、「A.jpg」が見つかったら取得する

仮に生成途中のファイルが見つかることがあるとしても,(プログラムAがファイルを弄っている間,ファイルがロックされているなら)「取得する」の側が成功しないのではないでしょうか.

投稿2022/01/06 08:56

fana

総合スコア11996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラムAの方ではそれがわかってるでしょうから問題はないのでは

投稿2022/01/06 08:31

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問