각기 다른 서버에서 실행되는 Windows 서비스의 인스턴스가 여러 개 있습니다. 각 Windows 서비스는 테이블에서 레코드를 찾으면 시작됩니다. 이제 예상 된 기능은 입니다. Windows 서비스 중 하나가 레코드를 선택하면 다른 Windows 서비스가 동일한 레코드를 선택하지 않아야합니다. 실제 기능 : 각 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
}
}
}
자세한 내용이 필요하면 알려주십시오.
"레코드를 선택합니다"코드를 게시 할 수 있습니까? 문제는 동기화 문제처럼 들리지만 코드가 없으면 추측 할 수 없습니다. – joergl
당신은 어떤 종류의 기록을 말하고 있습니까? 이것은 파일 레코드 또는 데이터베이스 테이블의 레코드입니까? 당신이 사용하고있는 서비스에 대한 코드 예제가 있습니까? 당신은 당신의 프로세스에 대한 더 자세한 정보를 필요로합니다. – MethodMan
데이터베이스 테이블 레코드입니다. – user1208862