C # P / Атрибут Invoke - PullRequest
       39

C # P / Атрибут Invoke

0 голосов
/ 22 августа 2011

Новое в C # Compact edition 6.5.Я пытаюсь установить дату и время для файла, который, кажется, отключен на 5 часов от фактического системного времени.Я делаю только это для создания файла:

        FileStream fs= File.Create(name);  

Просто делаю это, Дата создания на 5 часов вперед ... Если я пытаюсь установить CreationTime, я получаю ошибку компиляции, говоря, что Атрибут только для чтения,серьезно?

        FileInfo fi = new FileInfo(name);
        fi.CreationTime = date;

Итак, мой вопрос: поскольку я новичок в C #, как вы получаете доступ к атрибуту «только для чтения» в рамках CE?Я вижу упоминание P / Invoke, но, похоже, работает только с методами, а не с атрибутами.Кто-нибудь может дать краткое демо о том, как это сделать?

Я пробовал это решение и все еще получаю файл с записью UTC, даже если я отправляю ему текущийместное время

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Я только что запустил это:

[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

Что кажется правильнымдля меня.

0 голосов
/ 22 августа 2011

Вы не можете изменить CreationTime файла. Он устанавливается один и только один раз при создании файла. Если вы хотите использовать P / Invoke для установки времени, вы можете проверить этот похожий вопрос - c # - Изменить файл LastWriteDate в Compact Framework

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

...