VB.NET: запуск метода только один раз за время существования приложения - PullRequest
3 голосов
/ 10 февраля 2010

Я создаю приложение типа библиотеки, которое должно сканировать весь компьютер при первом запуске. Не снова никогда. Как мне это сделать?

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

Ответы [ 5 ]

6 голосов
/ 10 февраля 2010

Используйте либо

Deployment.Application.ApplicationDeployment.CurrentDeployment.IsFirstRun

или

My.Application.Deployment.IsFirstRun

Edit:

Проверьте эту статью для получения дополнительной информации.

2 голосов
/ 21 февраля 2010

Я нашел лучший способ использовать appsettings ..

1 голос
/ 10 февраля 2010

Использование базы данных SQL кажется жизнеспособным решением. Вы также можете записать флаг в файл настроек в файловой системе, если вы не хотите использовать таблицу для его хранения. Это довольно хороший сайт с некоторыми примерами записи в файл.

http://www.freevbcode.com/ShowCode.asp?ID=4492

1 голос
/ 10 февраля 2010

Вы всегда можете сохранить этот флаг в файле XML или в реестре, чтобы он был на ПК. Если вы храните его в базе данных и на разных компьютерах запущено несколько копий этой программы, вам придется как-то идентифицировать их в БД, тогда как если вы отслеживаете это локально, вам не нужно об этом беспокоиться.

1 голос
/ 10 февраля 2010

РЕДАКТИРОВАТЬ : Если вы ищете способ определить, с использованием некоторой встроенной функции VB.NET , был ли запущен метод когда-либо до (как и в прошлом году), я думаю, вам не повезло. Тем не менее, быстрый и грязный подход может заключаться в том, чтобы определить метод для запроса базы данных о флаге, на который вы ссылались, и сохранить результат этого метода в статическом флаге.

Public Sub MethodToRunOnlyOnce()
    ' this flag will maintain its value between method calls '
    ' in the same session '
    Static methodAlreadyRun As Boolean = MethodHasBeenRun()

    If methodAlreadyRun Then
        Exit Sub
    End If

    Try
        ' ... code ... '
    Finally
        MethodToSetDatabaseFlag()
        methodAlreadyRun = True
    End Try
End Sub

Private Sub MethodToSetDatabaseFlag()
    ' code here to set Db flag '
End Sub

Private Function MethodHasBeenRun() As Boolean
    ' code here to check Db flag '
End Function
...