You can use TimeSpan class, something like this:
TimeSpan t = TimeSpan.FromMilliseconds(ms);
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
It’s quite similar as this thread I’ve just found:
What is the best way to convert seconds into (Hour:Minutes:Seconds:Milliseconds) time?