|
■No60799 (タイムシャワー さん) に返信 > ■No60795 (風太郎 さん) に返信 > >>ノートの性能が悪くて、ファイルコピーを終了するより先に、アプリケーションの処理が走り >>ファイルがないよー!なんてことになっているのでは? >> >>上のコードでは、ファイルが完全にコピーされるまで待機していないように思いましたので。かしこ。 > > 風太郎 さん、レスありがとうございます。 > ということは、System.IO.File.Copyは非同期で実行されるのでしょうか? > (そういう認識ではなかったのですが) > また、ノートはレッツノートCF-N9のXPダウングレードですので、性能的に劣ることはないと思います。 >
ぬう。すみませぬ。なんとなくで書いたので・・・
質問の内容に対する、直接の回答ではないのですが、同様の動作をするコードを書いてみました。 *仕様が分かっていないので、さらに的外れするかもですが・・・
特段変わったことをしているわけではありませんが、貴方と違うのは、画像を一度ストリームに読み込んでいる点かなと考えます。
system.io.file.copyの処理が完全に終わっている(システム自体がファイルを掴んでいない状態)で保存の処理が走っているのか 当方では知識不足にて何も申し上げることができないので・・・参考までに以下に書いたコードを載せておきますね。かしこ。
Private Sub Btn_FileSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_FileSelect.Click 'オープンファイルダイアログ準備 Dim ofd As New OpenFileDialog 'Tiffファイルのみを対象とする ofd.Filter = "tiff|*.tif"
'ダイアログを開く If Not ofd.ShowDialog = Windows.Forms.DialogResult.OK Then Return 'ないとは思うけど、選択したファイルがない場合は、処理中止 If System.IO.File.Exists(ofd.FileName) = False Then Return
'選択したファイル名(フルパス) Dim String_FilePath As String = ofd.FileName
'保存後のファイル名(フルパス) Dim String_NewFilePath As String = System.IO.Path.GetDirectoryName(String_FilePath) & "\" & System.IO.Path.GetFileNameWithoutExtension(String_FilePath) & ".gif"
'後処理 ofd.Dispose() Application.DoEvents()
Dim Stream_FromTiff As System.IO.FileStream = Nothing
Try 'ストリームを作成(読み込みのみで開く) Stream_FromTiff = New System.IO.FileStream(String_FilePath, IO.FileMode.Open, IO.FileAccess.Read)
'画像の検証無しでイメージへ変換 Dim Image_ToSave As Image = Image.FromStream(Stream_FromTiff, False, False)
'Gif形式で保存する Image_ToSave.Save(String_NewFilePath, System.Drawing.Imaging.ImageFormat.Gif) Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally If Stream_FromTiff IsNot Nothing Then Stream_FromTiff.Dispose() End Try End Sub
|