2015-01-16 5 views
0

Я хочу создать класс в переносимой библиотеке классов, который управляет текущим временем в true hexadecimal времени, а не просто временем сексиама, представленным шестнадцатеричными цифрами.Шестнадцатеричные часы в портативной библиотеке классов C#

Каков мой лучший способ работы здесь, если я хочу, чтобы программы, которые его использовали, могли обновлять себя в режиме реального времени?

Вот что я рассмотрел:

  • Статический класс конвертер, который преобразует стандартный DateTime в результате время шестигранный (это может быть трудно использовать для программы обновления себя в реальном времени
  • класс, который вызывает события, когда шестнадцатеричные часы меняют часы, минуты, секунды и т. д., сохраняя время внутри самого класса (это может привести к арифметике с потерями и поставить под угрозу точность часов)

Я не могу использовать много от особенностей стандартного .NET, потому что я хочу, чтобы это была портативная библиотека. Я новичок в асинхронных функциях .Net 4.5 и имею некоторый предварительный опыт в простых многопоточных приложениях. Любая помощь будет оценена по достоинству.

+0

Если вы хотите предоставить многоразовую библиотеку, которая полезна во многих сценариях, я бы выбрал вариант A, поскольку он более общий. Можете ли вы рассказать больше о своем случае использования? – thumbmunkeys

+0

Я спросил это как один из моих первых вопросов о stackoverflow, но теперь я знаю, что это не в тему. Он должен быть закрыт и/или удален. –

ответ

1

Вы можете использовать метод преобразователя ниже, чтобы выполнить преобразование: пример

const int HexUnitsInDay = 16 * 16 * 16 * 16; 
const int SecondsInDay = 24 * 60 * 60; 

public static string ConvertToHexTime(TimeSpan tm) 
{ 
    int hexTime = Convert.ToInt32(tm.TotalSeconds * HexUnitsInDay/SecondsInDay); 
    return String.Format(".{0:X}", hexTime); 
} 

Использования:

Console.WriteLine(ConvertToHexTime(DateTime.Now.TimeOfDay)); 

Для обновления экрана на регулярной основе, вы можете использовать системный таймер-событие класс генерации.

В WPF вы можете использовать класс System.Windows.Threading.DispatcherTimer для этого, например. a clock in c# wpf application

В Winforms вы можете использовать класс System.Windows.Forms.Timer для этого, например. Run a Digital Clock on your WinForm

В обоих случаях: установите интервал обновления в 1318 миллисекунд (это примерно равно SecondsInDay/HexUnitsInDay).

Смежные вопросы