Альтернативный цикл сообщений с использованием application. run-события не запускаются
Привет сообщество, я столкнулся с большим количеством проблем, которые я не могу решить, когда я использую альтернативный насос сообщений, от событий, которые не запускаются, до полей, которые изменяются сами по себе, и классов, которые не создаются или не работают правильно.
Так как я не хочу использовать Windows.Форма и хочу, чтобы мое приложение работало более или менее аналогично как сервис, но не полностью. Я выбрал приложение Windows Forms и отключил Application Framework, я выбрал запуск из модуля. И поскольку моему приложению нужен насос сообщений, который я написал, чтобы он не закрывался сам по себе, а работал как форма Windows без окна. Я не знаю, в чем проблема, может быть, потоки конфликтуют, но опять же нет никакого исключения. Смотрите код:
Module Module1 Sub Main Dim absClass As New InheritorClass() End Sub End Module Class AbstractClass Sub New() Me.Start() End Sub WithEvents MainTimer As New System.Timers.Timer Public Event Load() Private Sub Start() System.Console.WriteLine("Application has started.") MainTimer.Interval = 5000 MainTimer.Start() RaiseEvent Load() Application.Run() RaiseEvent Load() End Sub Sub Close() System.Console.WriteLine("Application will exit.") Application.Exit() End Sub Dim retriesLeft As Integer = 10 Private Sub MainTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles MainTimer.Elapsed If retriesLeft > 0 Then System.Console.WriteLine(String.Format("{0} retries remaining...", retriesLeft)) retriesLeft = retriesLeft - 1 Else ' This stops the message pump, closing your application 'Application.Exit() Me.Close() End If End Sub End Class Class InheritorClass : Inherits AbstractClass Sub New() MyBase.New() End Sub Private Sub Me_Load() Handles Me.Load MsgBox("App has loaded") ' NEVER GETS TRIGGERED End Sub End Class
Мне удалось изменить код, чтобы заставить его работать с помощью методов прямого вызова, но затем некоторые поля изменяются или обнуляются сами по себе и т. д. Кроме того, вызов других классов из класса InheritorClass невозможен.
Что я уже пробовал:
--------------------------------------------------------------------------------------
Richard MacCutchan
Похоже, пришло время для полного переосмысления вашего дизайна. Если вы не придерживаетесь правил в Windows, то все может работать, а может и не работать. Если они этого не делают, то вам нужно посмотреть, почему.