가동 시간을 맞추기 위해 타이머를 사용하고 싶지는 않습니다. 타이머는 정확히 매초마다 발사하기를 기대하기에는 너무 신뢰할 수 없습니다. 그래서 그냥뿐만 아니라 당신이 전화 GetProcessTimes를 사용할 수있는 API 함수()이 있음입니다 :
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683223%28v=vs.85%29.aspx
PInvoke를 문은 다음과 같습니다
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetProcessTimes(IntPtr hProcess, out FILETIME lpCreationTime, out FILETIME lpExitTime, out FILETIME lpKernelTime, out FILETIME lpUserTime);
는 클래스 내에이 문을 넣습니다. 마지막으로
private DateTime FileTimeToDateTime(FILETIME fileTime)
{
ulong high = (ulong)fileTime.dwHighDateTime;
unchecked
{
uint uLow = (uint)fileTime.dwLowDateTime;
high = high << 32;
return DateTime.FromFileTime((long)(high | (ulong)uLow));
}
}
의 샘플 사용 : 다음과 같다
using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
using System.Runtime.InteropServices;
기능은 날짜 시간에 FILETIME을 변환하려면 다음과 같이 이러한 유형을 찾을 수있는 컴파일러가 필요
수입품은 이 두 기능은 다음과 같습니다 :
using System.Diagnostics;
void ShowElapsedTime()
{
FILETIME lpCreationTime;
FILETIME lpExitTime;
FILETIME lpKernelTime;
FILETIME lpUserTime;
if (GetProcessTimes(Process.GetCurrentProcess().Handle, out lpCreationTime, out lpExitTime, out lpKernelTime, out lpUserTime))
{
DateTime creationTime = FileTimeToDateTime(lpCreationTime);
TimeSpan elapsedTime = DateTime.Now.Subtract(creationTime);
MessageBox.Show(elapsedTime.TotalSeconds.ToString());
}
}
코드 .. 제발 ..? – Gerald
실제로 우리가 당신을 도울 수 있도록 귀하의 코드를 볼 필요가 있습니다. – Jordy
Ive는 게시물에 코드를 추가 했으므로 ive를 보았을 때 간단히 tmer를 만났을 때 볼 수 있듯이 (아직 추가하지 않고 추가하지 않았 음) 아직 간단한 타이머 –