Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme pour ouvrir un fichier avec 2 processus différents

1 réponse
Avatar
Lirim
salut,

Je cherche à acceder à un meme fichier par 2 processus différents en meme
temps... je voudrais que le premier puisse l'ouvir en lecture ecriture...
tandis que le second (et tous les autres) seulement en lecture...

J ai vu la classe FileStream mais je ne sais pas comment parametrer mon
objet...

J'ai bien essayé de spécifier le FileShare à toutes les valeurs mais il me
laisse toujours pas faire...

voilà mon code:

try

{



//_LayoutStream = new FileStream("C:\\" + this.Tag.ToString(),
FileMode.Open, FileAccess.Read, FileShare.Read);

_LayoutStream = File.Open(filepath, FileMode.Open, FileAccess.ReadWrite,
FileShare.Read);

_ReportParameters = (LayoutSerialization)BF.Deserialize(_LayoutStream);


}

catch (IOException ex)

{

_LayoutStream = File.Open(filepath, FileMode.Open, FileAccess.Read,
FileShare.Read);

_ReportParameters = (LayoutSerialization)BF.Deserialize(_LayoutStream);

MessageBox.Show("Ce rapport est en lecture seule car il est déjà ouvert par
un autre utilisateur");

}

1 réponse

Avatar
Casimir
Salut,
A mon avis tu devrais utiliser deux threads différents (un pour ouvrir en
lecture/écriture, et un autre pour la lecteure) en veillant à la
syncrohnisation sur les méthodes d'accès au fichier (lecture/ecriture). La
classe Thread se trouve dans le namespace System.Threading du framework.

"Lirim" wrote:

salut,

Je cherche à acceder à un meme fichier par 2 processus différents en meme
temps... je voudrais que le premier puisse l'ouvir en lecture ecriture...
tandis que le second (et tous les autres) seulement en lecture...

J ai vu la classe FileStream mais je ne sais pas comment parametrer mon
objet...

J'ai bien essayé de spécifier le FileShare à toutes les valeurs mais il me
laisse toujours pas faire...

voilà mon code:

try

{



//_LayoutStream = new FileStream("C:" + this.Tag.ToString(),
FileMode.Open, FileAccess.Read, FileShare.Read);

_LayoutStream = File.Open(filepath, FileMode.Open, FileAccess.ReadWrite,
FileShare.Read);

_ReportParameters = (LayoutSerialization)BF.Deserialize(_LayoutStream);


}

catch (IOException ex)

{

_LayoutStream = File.Open(filepath, FileMode.Open, FileAccess.Read,
FileShare.Read);

_ReportParameters = (LayoutSerialization)BF.Deserialize(_LayoutStream);

MessageBox.Show("Ce rapport est en lecture seule car il est déjà ouvert par
un autre utilisateur");

}