Когда вы начинаете новый поток, по умолчанию его языковой стандарт будет установлен на локаль операционной системы по умолчанию. Он будет не обязательно должен быть настроен на культуру, выбранную в региональных настройках Windows.
Вы можете это исправить, добавив следующую строку кода в начале вашей функции потока:
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
В качестве альтернативы, вы можете использовать DateTime.ParseExact()
и точно указать, какой формат вы хотите, чтобы разобрать, например:
DateTime.ParseExact("12/02/2015 00:00:00", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
Обратите внимание, что символы «/» и «:» в строке формата не являются стенографическими символами; они определяют соответственно разделители даты и времени. Они, случается, сопоставляются с теми же символами в инвариантной культуре, но они могут отображаться для разных персонажей в других культурах.
Чтобы указать, что именно эти «/» и «:» символы должны быть использованы, вы должны избавиться от них, как так:
DateTime.ParseExact("12/02/2015 00:00:00", "dd\\/MM\\/yyyy HH\\:mm\\:ss", CultureInfo.InvariantCulture);
Может _asynchronous process_ изменил 'CurrentCulture' настройки? Какова ваша «Текущая культура»? Покажите рабочий код. Но я не думаю, что процесс _type_ может изменить поведение 'DateTime.Parse' для вашей строки. –
Вы можете попробовать 'ParseExact' метод –