それぞれが異なるサーバーで実行されている Windows サービスの複数のインスタンスがあります。テーブル内にレコードが見つかると、それぞれの Windows サービスが開始されます。期待される機能は、Windows サービスの 1 つがレコードを選択した場合、他の Windows サービスが同じレコードを選択してはならないということです。実際の機能: 各 Windows サービスは、異なるレコードを選択することになっています。
すべてのインスタンスが同じレコードを取得して同時に処理しているため、問題が発生しています。
上記の解決策を提案できる人はいますか?
追加の詳細: データセットにレコードが含まれていることを確認するコードを追加しました (Windows サービスが処理するために以前に挿入したもの)。その後、いくつかのビジネスを実行し、メールを送信します。問題は、Windows サービスのインスタンスが複数あるため、望ましくない複数のメールを受け取ることです。
DataSet reportsDs = new DataSet();
int ReportID = 0;
int MastReptID = 0;
try
{
reportsDs = stored procedure to get the dataset in which the record is inserted
if (reportsDs != null && reportsDs.Tables[0].Rows.Count > 0)
{
ServiceName.isProcCompleted = false;
for (int rptcnt = 0; rptcnt < reportsDs.Tables[0].Rows.Count; rptcnt++)
{
//some business functions
//send a mail after finishing the above business process
}
}
}