0

これが私がしたことです:

  1. MSDNWindows Serviceのオンライン ガイドを使用して を作成しました。イベントをEventLog

  2. を使用してサービスをインストールしましたinstallutil.exe。サービス名がポップアップしますservices.msc

  3. サービスを手動で開始して、StartログがEventLog

今問題:

のメソッドは 10000 ミリTimerTickに設定されているため、10 秒ごとにEventLogエントリが取得されます。これは起こりません。Startログだけが表示されます。停止すると、Stopログが書き込まれます。

Timer有効で、コードはチェックされ、ダブルチェック、トリプルチェックされていますが、何が問題なのかわかりません。どこでも見つけようとしましたが、Windows ServiceVB.Netの使用に関する情報はあまりありません

サービスをコーディングするのはこれが初めてであり、その経験はありません。バグを見つけるのを手伝ってください。

ソースコード


Timerのイベントでこれを試しましたTick

Try
        Dim i As Integer = 1 
        evlwe("Tick " & i)
        i += 1      'Thanks for reminding about this @Plutonix and @Matt Wilko
    Catch ex As Exception
        evlwe("Error! " & ex.Message)
    End Try

しかし、まだ機能しません。「Tick 1」も「Error!」もありません。Event Viewer の下の「MyNewLog」フォルダに追加されます。スタートとストップだけ。

OPで忘れていたもう1つのことはServices.msc、Windowsのアプリからこのサービスを手動で開始していることです。それは私が間違っていることですか?

現在、 のおよびイベントでTimerを使用Try Catchして、 の開始と停止に問題があるかどうかを確認しようとしています。StartStopService

4

2 に答える 2

0

問題は、このタイプの がクラスに属しており、デスクトップを使用できない/対話できないためTimer、私が使用した が機能しないことでした。つまり、ウィンドウを使用してコンテンツを表示することはできません。したがって、 では動作しません。ServicesTimerSystem.Windows.FormsServicesSystem.Windows.Forms.TimerServices

TimerVisual Studio で説明されているこのタイプの概要でさえ、次のように述べています。

Public Class Timer
      Inherits System.ComponentModel.Component
 Member of System.Windows.Forms
Summary:
Implements a timer that raises an event at user-defined intervals. This timer is 
optimized for use in Windows Forms applications and must be used in a window.

正しくて使用可能な方法は、System.Timersインスタンスを作成することです。詳細はこちら

正しい方向を示してくれた@Chris Dunawayに感謝します。そして、私を助けるために努力してくれた他のみんな。

于 2013-11-04T16:43:26.977 に答える
0

エラーがスローされて飲み込まれている可能性があります。

'+' を使用して文字列と整数を連結している tick イベントでは、これは実行できません。

VB&では、文字列を連結するために使用するか、i.ToStringスイッチを使用するか、より良い方法で使用しOption Strict Onますが、これはコンパイルされず、記載されている修正のいずれかを行う必要があります。

解決

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim i As Integer = 0
    evlwe("Tick " & i) 'Use & for string concat, evlwe("Tick " + i) won't work
End Sub

エラー処理についても検討し、イベント ログにエラーを記録する必要があります。

于 2013-10-31T12:19:26.003 に答える