我正在製作一個庫類型的應用程序,它需要在第一次運行時掃描整個計算機。不會再次。我怎樣才能做到這一點?VB.NET:在應用程序的生命週期中只運行一次方法
我將使用SQL數據庫來存儲數據。所以,我可以輕鬆地在那裏製作一張桌子並存儲一個標誌並在第一次運行時檢查它,但是有沒有其他方法?在VB.NET中的任何本地支持?
我正在製作一個庫類型的應用程序,它需要在第一次運行時掃描整個計算機。不會再次。我怎樣才能做到這一點?VB.NET:在應用程序的生命週期中只運行一次方法
我將使用SQL數據庫來存儲數據。所以,我可以輕鬆地在那裏製作一張桌子並存儲一個標誌並在第一次運行時檢查它,但是有沒有其他方法?在VB.NET中的任何本地支持?
我找到了最好的辦法是使用的AppSettings ..
編輯:如果你正在尋找一種方法來確定,使用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
使用你的SQL數據庫似乎是一個可行的解決方案。如果您不想使用表來保存它,也可以在文件系統上的設置文件中寫入一個標誌。這是一個相當不錯的網站,提供了一些關於如何寫入文件的例子。
好的,你能告訴我,保存在普通的'.txt'文件和'* .ini'文件之間有什麼區別? – 2010-02-10 17:47:49
@Bibhas - 應該沒有區別。 '.ini'文件被用於應用程序的初始化,但現在不再用了。 – Sathya 2010-02-10 19:12:12
@Sathya - 好的。得到它了。會嘗試它。順便說一句,那些'* .cfg'文件呢?他們看起來比其他人更有條理。 – 2010-02-10 20:17:17
你可以此標誌一直保存在一個XML文件或註冊表,以便它在PC上。如果將它存儲在數據庫中,並且在不同的PC上運行該程序的多個副本,則必須以某種方式在數據庫中識別它們,而如果您在本地跟蹤它,則不必擔心。
二者必選其一
Deployment.Application.ApplicationDeployment.CurrentDeployment.IsFirstRun
或
My.Application.Deployment.IsFirstRun
編輯:
檢查this article,瞭解更多信息。
不錯。但是它將如何確定它的第一次運行?我的意思是,我需要測試應用程序,對吧?那麼,我只會得到一個鏡頭來測試它?如果我重新發佈會重置嗎? – 2010-02-10 17:41:10
如果My.Application.Deployment.IsFirstRun則是DoSomeMagic()。就這麼簡單。但據我所知,是的,如果你重新發布它會重置。除此之外,您可以使用註冊表(mind user priviledges),或者只在應用程序目錄中寫入一個空文件。但是我會考慮使用一個數據庫來實現這個擴展的解決方案。 – Anax 2010-02-10 21:49:41
嗯。感謝幫助。 :) – 2010-02-11 05:33:23
在應用程序生命週期,而不是在會話有效期 – 2010-02-10 14:20:03
@Eduardo:注意到。 – 2010-02-10 14:26:17
你有沒有試過'Anax'的答案?我會嘗試一下,但有疑問。 – 2010-02-10 17:48:57