.NET και κλειδωμένα αρχεία...
OK, ίσως ο καθένας μπορεί να εξηγήσει γιατί μπορώ να εγγυηθεί' θα ελέγξει ρητά αν μπορέσω να κλειδώσω ένα αρχείο πριν το διαβάσετε από αυτό ( θα διατηρήσει το . θα συμβεί., θα ελέγξετε ότι κανένας άλλος δεν εγγύησε- θα κλείσει το αρχείο προτού προσπαθήσει να το διαβάσει από αυτό. Ετικέτες FileSystemWatcher να περιμένετε για τα αρχεία που δημιουργούνται σε ένα δελτίο πριν από την εκκίνηση μιας εργασίας - καλά, αλλά δεν υπάρχει σίγουρα' φαίνεται να είναι οποιαδήποτε εύκολη μέθοδος για να ελέγξετε ότι το αρχείο είναι ΜSK2διαβάσιμη' πριν ξεκινήσετε να διαβάζετεM SK4 Τώρα ο τρόπος μου να κάνω αυτό το έργο είναι να προσπαθήσω να διαβάζω ΜSK5 και τοποθετήστε ένα Read lock - στο αρχείο χρησιμοποιώντας το Φιλοστέρμ και να συλλάβει το σφάλμα που ρίχνει όταν το αρχείο είναι κλειδωμένο από μια άλλη διαδικασία... αναφέρεται έτσιΜSK1 αλλά αυτό πραγματικά δεν κάνει' αναφέρομαι σωστά. αναφέρω ότι βάζω στο μυαλό της χρήσης εξαιρέσεων M SK4 αναφερόμενα επίσης REALLY αργήMK5 αναφέραμε για αυτόν τον τύπο εργασιών... αναφέρετε γιατί όχι' αναφέρει FileStreamMSKA8 αναφέρόμενοCanRead check for locks BEFORE opening the file
private static int m_ReadAttempts = 0;
private string ReadFileFromDisk(string filePath)
{
try
{
if(!File.Exists(filePath))
{
MessageBox.Show("Sorry, but the file specified " + Environment.NewLine + filePath + Environment.NewLine + "Cannot be found");
return string.Empty;
}
using(FileStream fs = new FileStream(filePath,FileMode.Open,FileAccess.Read,FileShare.Read))
{
using(StreamReader sr = new StreamReader(fs))
{
string tmpStr = sr.ReadToEnd();
sr.Close();
m_ReadAttempts =0;
return tmpStr;
}
}
}
catch(IOException ex)
{
if(m_ReadAttempts < 10)
{
Thread.Sleep(500);
m_ReadAttempts++;
return ReadFileFromDisk(filePath);
}
else
{
throw ex;
}
}
}