#c# #asp.net-mvc #vb.net
#c# #asp.net-mvc #vb.net
Вопрос:
Я работал с оконными службами, где я генерирую текстовые файлы по целевому пути на основе некоторых сведений из базы данных, но у меня проблема, что служба работает слишком быстро!
Я получал то же имя файла вместо требуемого изменения sec, чтобы я мог избежать дубликатов там.
код :
using (transactionscope scope = new transactionscope )
{
string nowtime = datetime.now.today.tostring(HHMMss) // it was working fine
}
файл должен быть сгенерирован в соответствии с определенным соглашением об именовании файлов!! пример: hhmmss >>> нет миллисекунды
может ли кто-нибудь дать мне эксклюзивные идеи, как справиться с этой частью?
Комментарии:
1. просто в сторону, но вам, возможно, придется пересмотреть свое решение, если вы используете временную метку, чтобы избежать дубликатов. В конечном итоге вы столкнетесь с дубликатами, если ваша служба работает более 24 часов, или когда начнется переход на летнее время, или кто-то изменит время в системе. Почему бы вам просто не использовать GUID для уникальной идентификации файла?
Ответ №1:
Вы можете добавить миллисекунды к имени файла:
string nowtime = datetime.Now.Today.ToString("HHmmssfff");
Смотрите Строки пользовательского формата даты и времени.
Несколько замечаний о коде, который вы опубликовали:
MM
это на месяцы, а не на минуты. Вы должны использовать нижний регистр mm.- Параметр, который
ToString
принимает, является строкой. - Ваш код не будет компилироваться, поскольку он неправильно обработан. Пожалуйста, используйте код, который может быть непосредственно использован в будущем.
Обновить:
Поскольку вам приходится использовать этот формат, единственным другим вариантом является «замедление» работы службы.
Добавление:
Thread.Wait(1000);
В нужном месте (конец цикла?) может сработать.
В качестве альтернативы, вы можете изменить свой код для добавления в файл, если вы все еще находитесь в пределах той же секунды.
Комментарии:
1. нет, мы не можем .!! файл должен быть сгенерирован в соответствии с определенным соглашением об именовании файлов!! пример: hhmmss >>> нет миллисекунды
2. @pubby — Почему вы не опубликовали это в своем вопросе? Это не то, о чем мы можем догадаться. Пожалуйста, отредактируйте свой вопрос и добавьте эту очень важную деталь.
3. мои сомнения …!!! мы можем ретранслировать в потоке!! я имею в виду, что это обеспечит требуемый точный вывод!!
4. @pubby — не могли бы вы перефразировать этот последний комментарий? Я не уверен, что это значит.
5. @pubby — спасибо за перефразирование. Это имеет смысл. Почему именно это даст вам неверный вывод?
Ответ №2:
Если вы говорите, что создаете несколько файлов с одинаковым именем (несколько файлов за одну секунду), то я бы взял тайм-аут с точностью до миллисекунд. Вы можете сделать это с помощью:
DateTime.Today.ToString("HHmmssfff");
fff обозначает три разряда справа от десятичной дроби (тысячные доли секунды).