私は小さなコードサンプルを持っています:
private void MonitorItems()
{
if (someCondition)
{
dateSelected = DateTime.Now;
GetAllItems();
}
else
{
if(allItems.Count>0)
CheckAllItems();
}
MonitorItems();
}
メソッド GetAllItems は DB に移動し、コレクションのすべての新しいアイテムを取得します -> allItems。次に、CheckAllItems メソッド:
private void CheckAllItems()
{
foreach (Item a in new List<Item>(allItems))
{
switch (a.Status)
{
case 1:
HandleStatus1();
break;
case 2:
HandleStatus2(a);
break;
case 0:
HandleStatus0(a);
break;
default:
break;
}
}
}
場合によっては (HandleStatus1 と HandleStatus2 の場合)、DB に移動し、更新を行ってから、メソッド GetAllItems を呼び出してコレクション allItems に再度入力する必要があります。
このタイプのコードは、WinFormsApp で Stack.Overflow 例外をスローしています。2 つの質問が
あります。1. このタイプの例外は、同じコードを使用して WinService アプリケーションでスローされますか?
2. 自己呼び出し方式の代わりにタイマーを使用することについてどう思いますか?