繁体   English   中英

C#P /调用属性

[英]C# P/Invoke Attribute

C#Compact Edition 6.5的新功能。 我正在尝试在似乎与实际系统时间相差5小时的文件上设置日期时间。 我只是这样做来创建文件:

        FileStream fs= File.Create(name);  

只是这样做,创建日期要提前5个小时...如果我尝试设置CreationTime,会收到一个编译错误,说属性为Readonly,是吗?

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

所以我的问题是,由于我不熟悉C#,如何在CE框架中访问“只读”属性? 我看到提到了P / Invoke,但似乎仅对方法有效,而对属性无效。 任何人都可以快速演示如何执行此操作?

我已经尝试过这种解决方案 ,即使我将其发送为当前本地时间,仍然可以获得写UTC的文件

我只是跑了这个:

[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#-在Compact Framework中更改文件LastWriteDate

但是,您应该解决根本原因,而不是破解问题。 如果文件的创建时间有问题,我会考虑检查系统的时间设置(包括时区)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM