Это обычная проблема с началом работы с людьми. Всякий раз, когда вы обновляете элементы пользовательского интерфейса из потока, отличного от основного потока, вам нужно использовать:
this.Dispatcher.Invoke(() =>
{
...// your code here.
});
Вы также можете использовать control.Dispatcher.CheckAccess()
, чтобы проверить, является ли текущий поток владеет контролем. Если он действительно владеет, ваш код выглядит нормально. В противном случае используйте шаблон выше.
Начиная приблизительно 2 года назад, я всегда абстрагирую вызов к DateTime. Теперь (C#) через Служебный класс. Таким образом, я могу всегда фальсифицировать дату/время, если я хочу, или просто передать ее непосредственно до DateTime. Теперь.
Звуки similiar, к какой предложенный BillH.
public class MyUtil
{
public static DateTime GetDateTime()
{
return DateTime.Now.AddHours(5);
//return DateTime.Now;
}
}
Обертка Ваши вызовы к 'getCurrentDateTime ()' системные вызовы, таким образом, можно ввести смещения или множители во времена чтения кода во время тестирования?