私は、たとえば、その確定時にアナウンスを行うには、それが勝っているスレッド上で動作する機能を行う必要があります。アナウンスをXまたはあらかじめ定義された時間間隔で送信しますか?
- 「で、当社のWebサイトを参照してください:....」5分ごと を実行するように設定します
- 「のランクにあなたの場所を確認します....」を計算するために、睡眠と、どのようにしながら、私は、スレッドタイマまたはスレッドを使用する必要がある場合は10分ごと
私は少し混乱しています実行するように設定すべてのアナウンスを実行する必要があります。私がなされるべき各発表を保持するクラスのリストを検討していた始めるため
、クラスでList<MyTimer>
のようなもののように:使用後
public MyTimer
{
public string Announcement { get; set; }
public int Interval { get; set; } // if interval is 0 means
// it will run just once
public bool hasSpecificTime { get; set; } // if this is true then will run
// only once at the SpecificTime
public bool Done { get; set; }
public DateTime SpecificTime { get; set; }
}
特定の時間のアナウンスが削除されます。私はこのようなものを使用して考えていたスレッドのよう
:
Timer = new System.Threading.Timer(TimerCallback, null, 0, 1000);
private void TimerCallback(object state)
{
foreach (var item in timerList)
{
// not sure how to handle the intervals of each continuous announcement
// some code here for the the above
// Not sure if this would work either because of the milliseconds etc
// on the DateTime
if (item.hasSpecificTime && !item.Done && SpecificTime == DateTime.Now)
{
SendAnnouncement(item.Announcement);
item.Done = true;
}
}
}
は私が必要なもののための私の実装OKですか?
私は質問で言ったように、関数内のインターバルと時間をどうやって処理するのですか?正しい時間に送信するように計算する方法はわかりません。
'timerListが大きくなると、完了したアイテムを別のリストに移動するのではなく、完了したアイテムをたくさんループさせないようにする必要があります。 5分ほど良いと思われる。 – Guapo
'定期的なイベントのために間隔を指定してSpecificTimeを増やす必要があります。 'それは私がそれを考慮していなかった良い点です、当初私はSpecificTimeから完全な間隔を使用することを考えていましたが、 hasSpecificTimeとSpecificTimeのアナウンスについては、それらは一度だけ実行され、 'interval> 0 'のアナウンスは、アプリが実行されている限り実行されます。つまり、私が最初に考えていたものです。だから私は間隔が変わったので、それが走っていた時間に各発表に基づいて間隔を計算する方法がわからないのです。 – Guapo