Интересно, какой самый безопасный способ вычесть два System.Runtime.InteropServices.ComTypes.FILETIME
объекта?Я использовал следующий код, но иногда он дает мне исключение ArithmaticOverflow из-за отрицательного числа в младших 32-битных значениях.Я не уверен, что включение тела с unchecked
послужит цели или нет.Пожалуйста, дайте мне несколько советов о том, как сделать это безопасно, без каких-либо исключений во время выполнения или предупреждающего сообщения CS0675.
private static UInt64 SubtractTimes(FILETIME a, FILETIME b)
{
UInt64 aInt = ((UInt64)(a.dwHighDateTime << 32)) | (UInt32)a.dwLowDateTime;
UInt64 bInt = ((UInt64)(b.dwHighDateTime << 32)) | (UInt32)b.dwLowDateTime;
return aInt - bInt;
}