C# P/ Атрибут Invoke
Новое в C# Compact издание 6.5. Я пытаюсь установить дату и время для файла, который, кажется, отключен на 5 часов от фактического системного времени. Я делаю только это, чтобы создать файл:
FileStream fs= File.Create(name);
Просто сделать это, Дата создания на 5 часов вперед... если я попытаюсь установить CreationTime, я получу ошибку компиляции, говоря, что Атрибут только для чтения, серьезно?
FileInfo fi = new FileInfo(name);
fi.CreationTime = date;
Итак, мой вопрос: поскольку я новичок в C#, как вы получаете доступ к атрибуту "только для чтения" в рамках CE? Я вижу упоминание P/Invoke, но, похоже, работает только с методами, а не с атрибутами. Кто-нибудь может дать краткое демо о том, как это сделать?
Я попробовал это решение и до сих пор получаю файл с записью UTC, хотя я отправляю его по текущему местному времени
2 ответа
Я только что запустил это:
[MTAThread]
static void Main()
{
var name = "\\foo.txt";
var info = new FileInfo(name);
using (info.Create()) { }
info.Refresh();
var createTime = info.CreationTime;
var now = DateTime.Now;
var delta = now - createTime;
Debug.WriteLine(delta.ToString());
}
И получил этот вывод:
00: 00: 00,0140000
Что мне кажется правильным.
Вы не можете изменить CreationTime файла. Он устанавливается один раз и только один раз при создании файла. Если вы хотите использовать P/Invoke для установки времени, вы можете проверить этот похожий вопрос - C# - Изменить файл LastWriteDate в Compact Framework
Однако вместо того, чтобы взломать проблему, вы должны устранить основную причину. Если есть проблема со временем создания файла, я бы рассмотрел проверку настроек времени вашей системы (включая часовой пояс).