Ваш DllImport
неверен.Ваша функция имеет только 4 параметра, но реальная функция имеет 5. Предположительно, происходит то, что MOVEFILE_COPY_ALLOWED
передается в lpData
и игнорируется.Параметр dwFlags
- это то, что происходит в стеке.
Исправление вашего p / invoke, вероятно, решит проблему.Кроме того, dwFlags
должен быть без знака.
[DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool MoveFileWithProgress(
string lpExistingFileName,
string lpNewFileName,
CopyProgressRoutine lpProgressRoutine,
IntPtr lpData,
uint dwFlags
);
С этим исправлением вам нужно решить, что передать на lpData
.Поскольку вы, кажется, не используете его в данный момент, это не имеет значения, и IntPtr.Zero
кажется очевидным выбором.