【发布时间】:2016-01-15 22:41:27
【问题描述】:
VB.NET.
试图使 Sub Main 表现得像一个表单。从某种意义上说,它不会消耗处理器并且Sub Main 会无限期地运行,并带有一个大约每秒触发一次的计时器事件。
下面的代码为我提供了我想要的行为,但我不完全理解 EventWaitHandle 的工作原理。我的问题是......有谁知道这是否是一种好方法,或者是否有一种更简单的方法来拥有一个基本上不做任何事情但允许触发 Timer 事件的 Sub Main?
Imports System.Threading
Module MainMod
Public Sub Main(args As String())
Dim waitHandle = New System.Threading.EventWaitHandle(True, EventResetMode.AutoReset, "", False)
Dim timer = New Timer(AddressOf OnTimerElapsed, Nothing, TimeSpan.Zero, TimeSpan.FromSeconds(1))
Do While True
waitHandle.WaitOne(TimeSpan.FromSeconds(20))
Loop
End Sub
Private Sub OnTimerElapsed(state As Object)
Debug.WriteLine(DateAndTime.Now.ToString)
End Sub
End Module
【问题讨论】:
-
嗯...什么? winforms 应用程序中也存在(并且需要)主子。它被称为application entry point。默认情况下,它是通过 MyApplication 类自动生成的。您始终可以创建自定义 AEP 并将启动表单设置为主子。
-
不清楚你为什么想要这种行为。可能还有其他方法,具体取决于您希望 sub 执行的操作 - 您是否能够发布您正在使用的代码或解释更多有关该程序的信息?谢谢
标签: vb.net multithreading timer main