gpt4 book ai didi

.net - 在 VB.NET 4 下创建系统服务时出现线程/定时器问题

转载 作者:行者123 更新时间:2023-12-01 09:10:29 25 4
gpt4 key购买 nike

我认为在 VB .NET 下创建一个简单的系统服务将是小菜一碟。男孩,我错了吗。首先,我通过 Google 发现一般帖子说您应该使用 Windows.Forms.Timer。然后,我发现相互矛盾的信息表明您必须通过代码从计时器类派生计时器才能使其工作。然后,人们使用各种可用的线程报告各种问题。由于显而易见的原因,我无法使用 VS 2010 即时调试器调试线程(尽管我不知道是否有其他方法可以做到这一点)。哇,当没有明确的指南时,这一切是多么令人困惑……

我的项目是一个应用程序启动器(类似于 cron),它将在一定秒数内定期启动。我正在尝试使用 Process.Start() 方法。我有一个 Beep() 函数作为第一条指令,Process.Start 以及一个 Process.WaitForExit 方法使它作为最后一条指令阻塞。我让我的代码通过计时器来执行此操作,但现在我开始使用线程。执行上没有区别。被覆盖的 OnStart 方法确实启动了(正如我通过调试确定的那样),但是在生产中启动服务时什么都没有发生,就好像它忽略了我的所有代码一样。将循环和逻辑放在 OnStart 方法中会产生一个不会启动的进程。我知道这是一个线程问题,但我也知道必须强制使用线程。我现在对如何完成这项工作感到目瞪口呆。我很想知道解决方案。

除了服务类之外,我还实现了从 MSDN 逐字复制的 ServiceInstaller 和 ProcessInstaller。

这是我正在尝试使用的一些代码。请注意,这仅反射(reflect)了我的代码在尝试在线程而不是计时器中实现逻辑时的当前状态(这对我来说是最佳的):

    Dim config As String
Dim configValues(2) As String
Dim objReader As System.IO.StreamReader
Dim interval As Integer
Dim launchProcess As Process

While True
Beep()
' This sub runs every time the elapsed milli-seconds of the timer pass
' Sp add your code here.

config = "30 c:\WiFiDropOutFix\start.vbs"

Try
objReader = New System.IO.StreamReader("C:\WiFiDropOutFix\config.txt")
config = objReader.ReadToEnd
objReader.Close()
Catch ex As Exception

End Try

configValues = config.Split(New Char() {" "c})
interval = Convert.ToInt32(configValues(0))

If Not interval > 0 And Not interval < 61 Then
interval = 10
End If

launchProcess = Process.Start(configValues(1))
launchProcess.WaitForExit()

Thread.Sleep(interval * 1000)

End While
End Sub

这是我请求的 OnStart 代码:
Protected Overrides Sub OnStart(ByVal args() As String)

appLaunchLogicThread = New Thread(AddressOf appLaunchLogic)
appLaunchLogicThread.Start()

End Sub

TIA。

最佳答案

尝试转到服务控制面板,编辑服务的属性,然后选中“交互式服务”或“ 允许服务与桌面交互 ”的选项。如果您尝试启动一个新进程并在屏幕上看到它,除非启用此选项,否则不会发生任何事情。

另外,设置 登录凭据 服务至管理员 确保它不是 权限问题 .如果它有效,那么您已经发现了问题所在。

另一个提示:所有处理代码为 普通应用 您可以轻松调试,一旦所有错误都被解决并且您知道代码完美无缺,那么 将其实现为服务 .

关于.net - 在 VB.NET 4 下创建系统服务时出现线程/定时器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10034359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com