Jetem początkujacym w c# i mam pytanie jak sprawdzic czy jest ustawiona flaga zapisu do pliku xml. Sutyacja jest nastepujaca aplikacja sklada sie z dwoch programow ktore moga zapisywac i oczywtywac z jednego pliku xml flage ustawiam za pomoca FileStream ale jak sprawdzić czy ktos w danej chwili nie ustawił flagi zapisu ??
Dzieki za odpowiedź
Odpowiedz na pytanie nie znam, ale mogę zaproponować inne podejście: Mutex (nazwany), który będzie obsługiwany przez oba programy (przy założeniu, że oba programy działają na tym samym komputerze).
Odpalasz to w momencie zapisu/odczytu danych - w przypadku synchronizacji, mutex zapewni ochronę czasową pliku.
Jeśli spróbujesz otworzyć plik już otwarty z flagą zapisu to dostaniesz wyjątek, ale to ci nic nie da bo i tak pewnie będziesz chciał poczekać aż plik będzie dostępny więc w tej sytuacji tak jak Deti sugeruje - muteks.
muteks? A jak można założyć muteks na 2 całkowicie różne programy? Prawdę mówiąc nigdy o tym nie słyszałem, a ostatnio szukam sposobu komunikacji między aplikacjami alternatywnego do systemu remoting z użyciem localhost.
Mutex nie służy raczej do "komunikacji' między dwoma programami - ale może pomóc w tym, co chcesz osiągnąć (tak - między dwoma programami).
Gdy mutex będzie manualnie nazwany, działa na wszystkich procesach, a więc - pomiędzy programami.
Tutaj więcej:
http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx
http://www.albahari.com/threading/part2.aspx#_Wait_Handles
acha, a już myślałem, że ktoś znalazł sposób odwołania się do wspólnego obiektu muteksa z kilku programów.
acha, a już myślałem, że ktoś znalazł sposób odwołania się do wspólnego obiektu muteksa z kilku programów.
hmm, ale on jest wspólny !
"Muteks nazwany" to to czego potrzebujesz. Taki muteks ma swoją nazwę i po ten nazwie można go odnaleźć przez dowolny program. Będziesz musiał sobie wymyślić jakąś unikatową nazwę dla tego muteksa. Żeby była unikatowa zazwyczaj w nazwie używa się nazwy programu + jego wersja + do czego służy muteks + coś tam jeszcze w miarę losowego.
sposób odwołania się do wspólnego obiektu muteksa z kilku programów
Ten sposób to po prostu utworzenie obiektu muteksa podając jego nazwę i już.