2009-06-11 24 views
2

私はtwitterと通信するためにC#を使用しています。ユーザ定義の日付にtwitterメッセージを送信するスケジュールシステムをコーディングする必要があります。メソッドの呼び出しを呼び出すC#

送信するメッセージは配信日時のデータベースにあります。

スケジュールされたメッセージをdbでチェックし、時刻が到来したときに送信する最も良い方法はどれですか?

答えて

0

実際、このソリューションはWindowsサービスを使用していますが、ASP.NET MVCアプリケーションと直接通信することはできません。タスクを処理するWebサービスと、WindowsサービスのSystem.Threading.Timerを追加して、定期的にWebサービスを呼び出しました。

2

正確なタイミングが必要ですか? 5分ごとにデータベースをポーリングすることで、「現在時刻+ 5分前に配信する必要があるすべてのメッセージを教えてください」と言って、それらをすべて送信することができますか? (もちろん、データベースに送られたようにマーキングしてください)少し早いか遅いかは重要ですか?

C#側でスケジューリングを行うと、より正確になりますが、本当に必要な場合を除き、私は非常に単純な解決策を採用します。

は(あなたのデータベースに応じて、コールバックを得るための巧妙な方法があるかもしれませんなどを引き起こした...しかし、再び、私は働く最も簡単な解決策に固執すると思います。)

+0

私は5分10分の遅れでうまくいくでしょう。どのような解決策を提案しますか? – jvalente

+0

答えが示すように、5分ごとにデータベースをポーリングします(Windowsサービスのタイマーなど)。送信するすべてを取得し、送信し、送信済みとしてマークします。ジョブが完了しました。 –

+0

Windowsサービスを作成しましたが、ネットワークサービスにする必要があります(リモートデータベースにアクセスする必要があります)。しかし、私は "エラー5:アクセスが拒否されました"のためサービスを開始できません。おそらく私はそれを管理者として開始する必要があります。これは意味がありますか?私のアプリケーションに管理者権限が必要ですか? – jvalente

0

これを行うには、いくつかの方法がありますが、最高の方法は、送信されていない予定されたつぶやきのDBを定期的にポーリングする(周波数はあなた次第です)Windows Serviceを設定することです。

Windowsサービスオプション(またはバックグラウンドスレッド)に加え、など、あなたがダウンしているように、インターネット接続やDBなどのシナリオを処理する必要があります言うまでもなく、

1

、あなただけのスケジュールを設定できますタスクは、DBをポーリングし、定義された間隔ごとにつぶやきを送信するアプリを実行する。

Windowsスケジュールはcan be setup using C#で、必要に応じて手動でセットアップするのが簡単です。

+0

私は、タスクスケジューラがユーザーのアプリケーションに最も推奨されていることを発見しました。このソリューションはこの場合には適合しません。 – jvalente

関連する問題