1

ユーザーが将来送信される電子メールをスケジュールできるVB.Netでアプリケーションを作成しています。アプリケーションのベース フォームが閉じられた後、バックグラウンドでリスナー スレッドを実行し続ける方法はありますか? また、システムの起動時にリスナーを起動する必要がありますが、その時点でフォームを開く必要はありません。

例 (望ましい) 機能: 私は午前中にアプリケーションを開き、3 つの電子メールをスケジュールします。そのうちの 1 つは 3 時間以内に送信され、残りの 2 つは明日の朝に送信されます。アプリケーションを閉じます。3 時間で、最初の 1 つが送信されます。一日の終わりに、私は自分のマシンをシャットダウンしました。明日の朝に電源を入れると、アプリケーションを開かなくても残りの 2 つが送信されます。

リスナーをサービスに分離する必要があると考えていますが、その道を進む前に簡単な方法がないことを確認したいと考えています。

個別のサービスとアプリケーションを使用することになった場合、両方を一度にインストールするインストーラーを作成できますか?

4

5 に答える 5

4
于 2013-05-22T22:19:43.340 に答える
1

私はあなたのために可能な解決策をここに持っています. フォームを閉じるイベントでは、次のコードを配置できます。

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Me.Visible = False
    e.Cancel = True
End Sub

これにより、フォームが非表示になり、コンピューターをシャットダウンするまでバックグラウンドで実行できます。再起動を処理してからメールを送信するには、再起動後にアクセスできるテキスト ファイルに送信するメールを追加し、プログラムをスタートアップに追加することをお勧めします。さらに良い解決策は、2 つのプログラムを用意することです。1 つは起動時に常に非表示になり、15 分ごとにテキスト ファイルをチェックします (たとえば)。もう 1 つは、新しい電子メールがリストに追加されるときに起動されるプログラムです。そして、送信する新しい電子メールをテキスト ファイルに追加します。

于 2013-05-22T23:54:31.733 に答える
1

NotifyIcon コントロールを使用し、ユーザーがメインフォームを閉じるときに OnClosing イベントをキャプチャして、トレイに最小化するか、アプリケーションを終了するかを質問します。

Microsoft の NotifyIcon コントロールのドキュメントは次のとおりです。

NotifyIcon コントロール

于 2013-05-22T22:30:12.183 に答える
1

プログラムを実行し続けることだけが必要な場合は、TaskBar アイコンの定義をプログラムに提供し、アイコンのグラフィックを使用してアプリケーションの状態を表すことができます。システムクロックの右横に表示されます。

次に、フォームが閉じられたという事実ではなく、そのアイコンのメニューからアプリケーションの終了イベントがトリガーされるように、開発プロジェクトを再構成するだけです。

于 2013-05-22T22:20:04.017 に答える
0

(私が間違っていたら申し訳ありませんが、ここで考えられる解決策を提案するだけです)スケジュール情報/日時を送信する電子メールを保持する単純なデータベースを添付し、起動時に通知アイコンを使用して(または通知アイコンなしでショートカットを使用して)アプリケーションをロードすると思います電子メールをフィードするためのユーザー インターフェイス/フォームを表示し、必要に応じて情報/日付時刻をスケジュールします + BackgroundWorker (アプリケーションをスリープ モードにして後で起動し、最初のスケジュールされた電子メールを送信する場合: X 時間後)。最初の電子メール更新を db に送信した後、アプリケーションを終了します。起動時にデータベースをチェックして、最初の電子メールを送信するか、最初の電子メールを送信する前に PC が起動する場合はスリープ モードに移行します。ただし、最初の電子メールがすでに送信されている場合は、スケジュールされた他の 2 つの電子メールを送信します (データベースの日時を確認してください)。これでうまくいくはずです... :)

于 2013-10-05T05:49:58.530 に答える