C# 30 дней с сегодняшней даты

Если необходимо диагностировать утечку памяти в.NET, проверьте эти ссылки:

http://msdn.microsoft.com/en-us/magazine/cc163833.aspx

http://msdn.microsoft.com/en-us/magazine/cc164138.aspx

Те статьи описывают, как создать дамп памяти Вашего процесса и как проанализировать его так, чтобы можно было сначала определить, является ли утечка неуправляемой или управляемой, и если им управляют, как выяснить, куда он прибывает из.

Microsoft также имеет более новый инструмент, чтобы помочь с генерацией дампов катастрофического отказа, заменить ADPlus, названный DebugDiag.

http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en

22
задан kame 27 July 2015 в 15:53
поделиться

8 ответов

string dateInString = "01.10.2009";

DateTime startDate = DateTime.Parse(dateInString);
DateTime expiryDate = startDate.AddDays(30);
if (DateTime.Now > expiryDate) {
  //... trial expired
}
50
ответ дан 29 November 2019 в 03:20
поделиться

DateTime.AddDays делает это:

DateTime expires = yourDate.AddDays(30);
20
ответ дан 29 November 2019 в 03:20
поделиться

На один я могу ответить уверенно!

DateTime expiryDate = DateTime.Now.AddDays(30);

Или, возможно - если вам просто нужна дата без привязки времени, что может быть более подходящим:

DateTime expiryDate = DateTime.Today.AddDays(30);
13
ответ дан 29 November 2019 в 03:20
поделиться
DateTime _expiryDate = DateTime.Now + TimeSpan.FromDays(30);
4
ответ дан 29 November 2019 в 03:20
поделиться

Возможное решение - при первом запуске создать файл, содержащий текущую дату, и поместить его в IsolatedStorage. Для последующих запусков проверьте содержимое файла и сравните с текущей датой; если разница дат превышает 30 дней, сообщите об этом пользователю и закройте приложение.

2
ответ дан 29 November 2019 в 03:20
поделиться

Для этого вам необходимо сохранить первое время выполнения программы. Как я, вероятно, это сделаю, используя встроенные настройки приложения в Visual Studio. Сделайте один с именем InstallDate, который является настройкой пользователя и по умолчанию имеет значение DateTime.MinValue или что-то в этом роде (например, 01.01.1900).

Затем, когда программа запускается, проверка выполняется просто:

if (appmode == "trial")
{
  // If the FirstRunDate is MinValue, it's the first run, so set this value up
  if (Properties.Settings.Default.FirstRunDate == DateTime.MinValue)
  {
    Properties.Settings.Default.FirstRunDate = DateTime.Now;
    Properties.Settings.Default.Save(); 
  }

  // Now check whether 30 days have passed since the first run date
  if (Properties.Settings.Default.FirstRunDate.AddMonths(1) < DateTime.Now)
  {
    // Do whatever you want to do on expiry (exception message/shut down/etc.)
  }
}

Пользовательские настройки сохраняются в довольно странное место (что-то вроде C: \ Documents and Settings \ YourName \ Local Settings \ Application Data), так что обычному Джо все равно будет довольно сложно его найти. Если вы хотите быть параноиком, просто зашифруйте дату, прежде чем сохранять ее в настройках.

РЕДАКТИРОВАТЬ: Вздох, неправильно прочитал вопрос, не такой сложный, как я думал>.>

0
ответ дан 29 November 2019 в 03:20
поделиться

@ Эд Кортни, @ Джеймс, У меня один глупый вопрос. Как уберечь пользователя от этого файла? (Файл, содержащий дату истечения срока действия). Если у пользователя есть права на установку, то, очевидно, он также имеет доступ для просмотра файлов. Изменение расширения файла не поможет. Итак, как сохранить этот файл в безопасности и подальше от рук пользователей?

0
ответ дан 29 November 2019 в 03:20
поделиться

Лучшим решением может быть введение файла лицензии со счетчиком. Запишите в файл лицензии дату установки программы (во время установки). Затем каждый раз, когда приложение запускается, вы можете редактировать файл лицензии и увеличивать счетчик на 1. Каждый раз, когда приложение запускается, вы просто выполняете быструю проверку, чтобы увидеть, были ли достигнуты 30 использований приложения, т.е.

if (LicenseFile.Counter == 30)
    // go into expired mode

Также это будет решить проблему, если пользователь вернул системные часы, так как вы можете выполнить простую проверку, чтобы сказать

if (LicenseFile.InstallationDate < SystemDate)
    // go into expired mode (as punishment for trying to trick the app!) 

Проблема с вашей текущей настройкой заключается в том, что пользователю придется использовать приложение каждый день в течение 30 дней, чтобы получить полные 30 дней испытание.

1
ответ дан 29 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: