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

Однако вместо того, чтобы взломать проблему, вы должны устранить основную причину. Если есть проблема со временем создания файла, я бы рассмотрел проверку настроек времени вашей системы (включая часовой пояс).

Другие вопросы по тегам