Komunikacja między główną aplikacją, a aplikacją do zmiany opcji.

0

W C#, WPF, tworzę aplikację, która ma być włączona cały czas w tle. Po prostu pełni jakąś funkcję dla systemu. W związku z tym, aby zmienić ustawienia użytkownika dla tej aplikacji, stworzyłem osobny projekt/aplikację, właśnie do zmiany opcji (korzysta z serializacji, aby zapisać plik z opcjami). Tu pojawia się moje pytanie: Jak poinformować tą aplikację działającą w tle, że jej ustawienia zostały zmienione w aplikacji do zmiany opcji? I czy jest to na pewno dobry sposób na rozwiązanie problemu?

1

Najprościej będzie, gdy zmiana opcji będzie częścią aplikacji właściwej. Czy z jakiegoś powodu musi to być osobna aplikacja?

1

Czy ta aplikacja działa jako usługa? Bo jeżeli nie, to mogłaby mieć gui do ustawiania opcji.
Możesz też użyć named pipes //www.dijksterhuis.org/using-named-pipes-in-c-windows/
Jak dla mnie najprostszym rozwiązaniem tutaj jest użycie FileSystemWatcher: http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

0

Aplikacja jest aplikacją działającą w tle, nie ma okna. Włącza się przy starcie komputera i robi swoje łącząc się z bazą danych co jakiś czas.
to jaki problem dodać okno i chować ją do traya????

2

Serializacja i przesyłanie opcji z jednej aplikacji do drugiej to overkill. Jeśli aplikacja nie jest serwisem i działa w przestrzeni użytkownika to nie ma żadnych przeszkód dołożyć do niej okno. Synchronizacje trzeba upraszczać jak się tylko da.

Powinieneś użyć jednej aplikacji. Daj jej możliwość uruchamiania w różnych trybach (w zależności od parametrów wywołania). .NET do komunikacji międzyprocesowej oferuje muteksy, rurki (pipe) i sockety. Muteks nie wystarczy, socket aż za dużo. Przyda się rurka. Może pełnić zarówno funkcję strażnika (aby przeciwdziałać wielokrotnemu uruchamianiu aplikacji w tle) jak i do powiadamiania instancji głównej o żądaniu wyświetlenia okna opcji.

Tak to może wyglądać:

START
  |
  |
Utwórz NamedPipeServerStream (z ograniczeniem na jedną instancję)
  |                   |
  |SUKCES             |JUŻ ISTNIEJE
  |                   |
  |           Wywołano z parametrem ("pokaż opcje")?
  |             |                            |
  |             |NIE                         |TAK
  |             |                            |
  |           WYJDŹ             Utwórz NamedPipeClientStream,
  |                             połącz się z serwerem, wyślij
  |                             przez rurkę wiadomość i WYJDŹ
Uruchom program w tle                
i oczekuj na dane z rurki                
  |
  |
Wywołano z parametrem ("pokaż opcje")?
  |                 |
  | NIE             | TAK
  |                 |
  |           Wyświetl okno opcji
  |                 |
  |                 |
  |                 |
Po prostu działaj sobie w tle, jak pojawi
się coś na rurce - wyświetl okno opcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1