Perkusja na timerach

0

Witam, chcę stworzyć sobie prosty programik do tworzenia własnych beatów. Zaimplementowałem mechanizm odtwarzania dźwięków, a by wiele bębnów mogło grać na raz, posłużyłem się platformą XNA. Do zarządzania ustawieniami służy natomiast prosta forma wywoływana wprost z game1.cs. Znajdują się też w niej timery, których sterowanie i obsługa zdarzenia tick realizowana jest również z wewnątrz game1.cs (po utworzeniu instancji klasy Form1.cs). Problem polega na tym, że potrzebuję przesunąć niektóre bębny w czasie, co oznacza konieczność wprowadzenia kontrolowanych przesunięć pomiędzy pojedynczymi timerami. Zatrzymanie pojedynczego timera, który chcę przesunąć, wywołanie metody Thread.Sleep(x) i wznowienie go po danym okresie czasu x nie rozwiązuje problemu, gdyż ku mojemu zdziwieniu, timer nie zachowuje się jak proces i jest przerywany przez Thread.Sleep. Kombinowałem również z milisekundami - bęben uruchamiany co x milisekund - nie zdaje to jednak egzaminu, gdyż ani metoda Update, ani Draw nie jest wykonywana co każdą milisekundę, a w tym przypadku rozdzielczość np. 10 milisekund przy kilkunastu bębnach i kilkuset przebiegach (taktach) perkusji może doprowadzić do olbrzymich różnic w czasach wyzwalania bębnów. Co radzicie? :D

0

1 pytanie - dlaczego nie zrobisz tego na wątkach? tak jak pisałeś, że działa

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