Mam aplikację w której potrzebuję w różnych miejscach komunikować się z wagą poprzez RS232. W tym celu przygotowałem UserControl do komunikacji z wagą, wyświetlania i rejestrowania jej wskazań. Aplikacja jest pisana z myślą o terminalach dotykowych i wykorzystuje okna nakładające się na siebie. Po uruchomieniu aplikacji wybieram użytkownika i loguję się, jak logowanie przebiegnie prawidłowo to wyświetlam następne okno z wyborem trybu pracy, po wyborze trybu pracy przechodzę do kolejnego okna i tutaj pojawia się moja UserControl do komunikacji z wagą. Jej pierwsze uruchomienie odbywa się bezproblemowo -problem pojawia się jeśli wyjdę z tego okna (wykorzystuję najprostszą metodę "Close()" dla okna) i próbuję wejść jeszcze raz w tryb z obsługą wagi - moje UserControl przy ponownej próbie otwarcia zawiesza cały program.
Co do mojego UserControl i jego inicjalizacji:
public partial class ucKontrolkaWagi : UserControl
{
private Thread waga;
public ucKontrolkaWagi()
{
InitializeComponent();
bt_Tara.IsEnabled = Params.IloscWag > 0;
bt_Zero.IsEnabled = Params.IloscWag > 0;
bt_Waga.IsEnabled = Params.IloscWag > 1;
Params.NrAktualnejWagi = 1;
if (waga != null)
{
if (!waga.IsAlive)
{
waga.Start();
}
}
else
{
waga = new Thread(odczytWagi);
waga.Start();
}
}
Wywołanie kontroli wagi w XAML okna trybu pracy:
- definicja:
xmlns:komponenty="clr-namespace:Terminal.Komponenty"
- dodanie:
<komponenty:ucKontrolkaWagi x:Name="KontrolkaWagi" Grid.Column="3" Grid.Row="1" Grid.RowSpan="4" />
Czy na podstawie tego fragmentu kodu ktoś może mi pomóc gdzie tkwi problem? Ta kontrolka ma się pojawić w wielu miejscach (tzn w wielu oknach ale te oknach ale za każdym razem będzie jej pojedyncza instancja) i trochę komplikuje mi to dalsze prace nad oprogramowaniem.