Jednokrotne wypisane w pętli

0

Siemka!
Chcę stworzyć sobie rejestr w programie, jednak gdy tylko uruchomie program i logi powinny zapisać się jeden raz, niestety nie wiem jak mogę to zrobić proszę o pomoc.
Przykładowy fragment kodu:

while (!dataMessager.Rozlaczony)
            {
                int threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;

                String Wiad = odbierzKomunikat(threadId);
                if (Wiad != null)
                {
                    raportForm.RaportText += "\r\nWiadomość: " + Wiad + " od watku ID: " + threadId;
                    //MessageBox.Show("Wiadomość: " + Wiad + " od watku ID: " + threadId);                  
                }
            }

I cały czas wypisuje ta linijkę raportForm.RaportText += "\r\nWiadomość: " + Wiad + " od watku ID: " + threadId; kilka linijek dla tego samego wątku, a chciałbym żeby ta linijka była wypisana tylko raz.

0

Czy komunikat jest zawsze taki sam dla jednego threadId?

0

tak jest dla jednego threadId wyskakuje kilka takich samych komunikatów, po chwili przechodzi na kolejne threadId i też się sytuacja powtarza

0

najprostsze rozwiązanie na szybko:

List<int> list = new List<int>();
while (!dataMessager.Rozlaczony)
            {
                int threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
 
                String Wiad = odbierzKomunikat(threadId);
                if (Wiad != null && !list.Contains(threadId))
                {
                    raportForm.RaportText += "\r\nWiadomość: " + Wiad + " od watku ID: " + threadId;
                    list.Add(threadId);
                }
            }

Lista ta pozwala sprawdzić czy już dany wątek wpisał swoją wiadomość czy nie. Jeżeli potrzebujesz dobrej wydajności to można by tu dać jakąś kolekcję z implementacją opartą na drzewie binarnym ;)

0

Oczywiście dzięki za pomoc;)

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