.NET(実行可能ファイルを実行する前に、アップデートを確認するために.NET 4を使用している(かなり)単純なC#アプリケーションを作成しています。新しいバージョンのexeがネットワーク共有に存在する場合は、それをローカルフォルダにコピーして起動するだけです。 File.Copy()の限界を読んでいる間を除いて、すべて完璧に動作しています。私はこれを行っている間にプログレスバーを表示できないことに気付きました。私が見たすべてのものはCopyFileExを使用すると言いました。それをやろうとしている。CopyFileEx "パラメータが無効です"エラー
私はサンプルコードhereを使用していましたが、実際にアプリケーションを実行するときを除いて、CopyFilEx()メソッドが返す以外は細かい部分をコンパイルすることができます。 falseで、「パラメータが正しくありません」というエラーが表示されます。
私のコード(必要であれば、関連するセクションのみ、私はより多くを追加します)
関数を呼び出す:
XCopy.Copy(strServerAppPath + strExeName, strLocalAppPath + strExeName, true, true, (o, pce) =>
{
worker.ReportProgress(pce.ProgressPercentage, strServerAppPath + strExeName);
});
(ソースパスがあると評価 "C:\ test.txtの" と"C:\テスト\のあるtest.txt" の宛先パス)
エラーは、上記リンクされたコードで発生:
bool result = CopyFileEx(Source, Destination, new CopyProgressRoutine(CopyProgressHandler), IntPtr.Zero, ref IsCancelled, copyFileFlags);
if (!result)
throw new Win32Exception(Marshal.GetLastWin32Error());
助けを前もってくれてありがとうございました。私は数時間、これに苦しんでいます...
興味深いです...私は前に同様の答えを見たことがありましたが、一般的なコンセンサスは、copyfileexが優れているように見えました(実際に働くことができれば)。私はそれをどんな速度でも試してみましょう:) – Mansfield
それは働いたので、私はそれに行くでしょう。どうもありがとう! – Mansfield
'ReadBytes(byte []、int、int)'メソッドを使うほうが良いかもしれません。これは、読み込み操作ごとに新しい配列を作成するのではなく、同じバッファを再利用できます。 (http://msdn.microsoft.com/en-us/library/ms143295.aspx) –