如何通过LAN链接Visual Studio应用程序

时间:2013-07-17 15:29:43

标签: vb.net visual-studio lan

我已经创建了一个VS应用程序,我已经在另一台计算机上安装了一个副本,我希望通过LAN链接它们,这样如果settings被整合在一起,其他的setings也将被保存。

例如此设置

我在sttings中创建了一个新的name并将其命名为“AdminIn”并将其类型设置为integer,将其scope设置为user并将其值设置为0

    Dim AI As New My .MySettings

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    AI.AdminIn = AI.AdminIn + 1
Ai.SAve()

End Sub

现在如何在另一台计算机上的其他应用程序中更新AI。

如何通过LAN连接并完成此操作?

1 个答案:

答案 0 :(得分:0)

我发现这个链接提供了一些示例代码来修改My.Settings中可能有用的应用程序作用域变量。我用一个带有计时器和标签的简单表格测试了它,显示了AdminIn设置的当前值,它似乎有效。计时器通过检查重新加载的My.Settings值来更新表单的每个实例上的标签。该变量需要是应用程序作用域,以便可以在任何可运行可执行文件的计算机上访问所有用户。

http://www.codeproject.com/Articles/19211/Changing-application-scoped-settings-at-run-time

这是我整理的表单代码,以使当前的管理员计数保持最新状态。非常简单,但似乎整齐地完成了这项工作。

Public Class Form1

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'Decrement the AdminIn count when the current instance of the form is closed.
        Me.tmrAdminCheck.Stop()
        ChangeMyAppScopedSetting((My.Settings.AdminIn - 1).ToString)
        'Reload the .exe.config file to synchronize the current AdminIn count.
        My.Settings.Reload()
        My.Settings.Save()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Increment the current AdminIn count when a new instance of the form is loaded
        ChangeMyAppScopedSetting((My.Settings.AdminIn + 1).ToString)
        'Reload the .exe.config file to synchronize the current AdminIn count.
        My.Settings.Reload()
        My.Settings.Save()

        Me.lblAdminsIn.Text = "Current Admins In: " & My.Settings.AdminIn.ToString
        'Start the timer to periodically check the AdminIn count from My.Settings
        Me.tmrAdminCheck.Enabled = True
        Me.tmrAdminCheck.Interval = 100
        Me.tmrAdminCheck.Start()
        Me.Refresh()
        Application.DoEvents()
    End Sub

    Private Sub tmrAdminCheck_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAdminCheck.Tick
        'Reload the .exe.config file to synchronize the current AdminIn count.
        My.Settings.Reload()
        Me.lblAdminsIn.Text = "Current Admins In: " & My.Settings.AdminIn.ToString
        Me.Refresh()
        Application.DoEvents()
    End Sub
End Class

我用这种方法找到了一些东西,它们与其他人在评论中提到的内容有关:

  1. 应用程序的.exe.config文件必须位于可访问的位置(CodeProject示例默认为应用程序的可执行目录)。当然,您可以将设置保存到另一个共享目录中的INI文件或其他配置文件,并完成类似的操作,但此方法使用My.Settings
  2. 您可能希望对此可能性进行额外检查 两个人试图在同一时间进入。如果 发生这种情况,配置文件仍然会被打开并锁定, 并且不会保存新的AdminIn值。 CodeProject示例 没有任何异常处理,但你可以很容易地解决这个问题 通过进行递归调用进入异常处理的功能 到子。
  3. 否则,这似乎是完成你所谈论的完全可行的方法。