Comment mettre à jour la date et/ou le temps de l'utiliser .NET

Je suis en train de mettre à jour mon système de temps en utilisant les éléments suivants:

[StructLayout(LayoutKind.Sequential)] 
private struct SYSTEMTIME
{
    public ushort wYear;
    public ushort wMonth;
    public ushort wDayOfWeek;
    public ushort wDay;
    public ushort wHour;
    public ushort wMinute;
    public ushort wSecond;
    public ushort wMilliseconds;
}

[DllImport("kernel32.dll", EntryPoint = "GetSystemTime", SetLastError = true)]
private extern static void Win32GetSystemTime(ref SYSTEMTIME lpSystemTime);

[DllImport("kernel32.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
private extern static bool Win32SetSystemTime(ref SYSTEMTIME lpSystemTime);

public void SetTime()
{
    TimeSystem correctTime = new TimeSystem();
    DateTime sysTime = correctTime.GetSystemTime();
    //Call the native GetSystemTime method
    //with the defined structure.
    SYSTEMTIME systime = new SYSTEMTIME();
    Win32GetSystemTime(ref systime);

    //Set the system clock ahead one hour. 
    systime.wYear = (ushort)sysTime.Year;
    systime.wMonth = (ushort)sysTime.Month;
    systime.wDayOfWeek = (ushort)sysTime.DayOfWeek;
    systime.wDay = (ushort)sysTime.Day;
    systime.wHour = (ushort)sysTime.Hour;
    systime.wMinute = (ushort)sysTime.Minute;
    systime.wSecond = (ushort)sysTime.Second;
    systime.wMilliseconds = (ushort)sysTime.Millisecond;

    Win32SetSystemTime(ref systime);
}

Quand je debug tout semble bon et toutes les valeurs sont correctes mais quand il appelle le Win32SetSystemTime(réf systime) ème temps réel du système(durée d'affichage) ne change pas et reste le même. La partie étrange, c'est que lorsque j'appelle la Win32GetSystemTime(réf systime) il me donne la nouvelle mise à jour de temps. Quelqu'un peut-il me donner un peu d'aide sur ce?

comme je vois, TimeSystem est non à partir de la base de classe du système, êtes-vous sûr que TimeSystem ne change pas le temps? essayez de commenter les Win32SetSystemTime(réf systime); ligne

OriginalL'auteur user62958 | 2009-02-06