Valami ilyesmi kellene neked fapados megvalósítással:
var delayBetweenRetries = 30 * 1000;
var maxRetries = 3;
var retryCount = 0;
var expectedFileCount = GetExpectedRemoteFileCount();
var actualFileCount = 0;
for (;;)
{
var fileCount = GetRemoteFileCount();
if (fileCount > expectedFileCount)
{
throw new TooManyRemoteFilesException();
}
else if (fileCount == expectedFileCount)
{
break;
}
else if (fileCount == actualFileCount)
{
if (++retryCount > maxRetries)
throw new TooManyRetriesException();
}
else if (fileCount > actualFileCount)
{
retryCount = 0;
actualFileCount = fileCount;
}
else
{
throw new RemoteFileCountMismatchException();
}
Thread.Sleep(delayBetweenRetries);
}
Ha a távoli szerveren drága az exportálás és az SCP kapcsolat szeret megszakadni, akkor érdemes úgy megírni a GetRemoteFileCount()
metódust, hogy az kezelje a kapcsolat újraépítését. És persze nem árt a fájlok számának figyelése mellett a tartalmukat is ellenőrizni később.
Ha sokkal bonyolultabb hibatűrést megvalósító esetek is előfordulhatnak, akkor a Polly library az egyik legjobb arra a célra, hogy ne kelljen minden távoli hívásnál/lekérdezésnél 30-50 soros logikát megírni.
[ Szerkesztve ]
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek